请看看下面的代码... 我正在创建一个上下文菜单并实现方法onContextItemSelected
但问题是,当我按下回复项...删除对话框情况也出现和活动也开始两次......意味着所有的情况下,执行...在删除回复和转发的情况下...会发生什么是问题,请帮助上下文菜单不能正常工作
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId())
{
case R.id.reply:
{
Intent i = new Intent();
String s2 = (String) ((Cursor) getListView().getItemAtPosition(info.position))
.getString(2);
i.putExtra("number", s2);
// Log.v("number", s2);
i.setClass(this, CreateMessage.class);
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
}
case R.id.delete:
{
final String s = (String) ((Cursor) getListView().getItemAtPosition(info.position))
.getString(1);
dba = new DBAdapter(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to delete?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Log.v("", "You Clicked " + s);
dba.delete("messages", "id=?", new String[] { s });
populate();
dba.close();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
case R.id.forward:
{
Intent i = new Intent();
String s3 = (String) ((Cursor) getListView().getItemAtPosition(info.position))
.getString(4);
// Log.v("message", s3);
i.putExtra("message", s3);
i.setClass(this, CreateMessage.class);
startActivity(i);
}
default:
return super.onContextItemSelected(item);
}
}
这里是在logcat中显示的logcat错误...
03-30 09:13:28.439: E/WindowManager(2273): Activity sms.app.Displayer has leaked window [email protected] that was originally added here
sms.app.Displayer是在我在执行上下文菜单中的类..
,这里是上下文菜单文件的代码..
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/reply" android:title="Reply"></item><item
android:id="@+id/forward"
android:title="Forward">
</item>
<item android:id="@+id/delete" android:title="Delete Message">
</item>
</menu>
是这是正确的,但返回真正的声明应该在外部范围....不是在break语句后 – kashifmehmood 2012-04-12 09:42:29
编辑我的答案根据需要/建议 – 2012-04-12 09:52:42