onButtonClick与onMenuItemSelected -----结果不一样

时间:2012-02-14 10:10:42

标签: java android menu

我有一个方法deleteDilaog(它显示带有yes和no选项的对话框。当点击是它做某事时,当点击它没有取消对话框时)它被称为购买点击按钮或选择菜单中的项目。问题是,结果不一样?从菜单中选择它可以正常工作但单击按钮时它只显示对话框,无论我点击什么,没有任何反应?

按钮:

private void RemoveAll(){

Button button=(Button) findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        deleteDialog();

    }
});

}

菜单项:

@Override
public boolean onMenuItemSelected(int id, MenuItem item) {
    mDeleteId=item.getItemId();
    switch(item.getItemId()) {
    case INSERT_ID:
        addItem();
        return true;
    case DELETE_ALL_ID:
        deleteDialog();
        break;

    }

    return super.onMenuItemSelected(id, item);
}

deleteDialog方法:

private void deleteDialog() {
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setMessage

(CONFIRM_DIALOG_STRING).setCancelable(false).setPositiveButton

(POSITIVE, new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int 

which) {
            switch (mDeleteId) {
            case DELETE_ALL_ID:
                mDbHelper.removeAllLists();
                fillData();
                break;
            case DELETE_ID: 
                Cursor c = (Cursor) 

getListView().getAdapter().getItem(which);
                mDbHelper.removeList

(mItemId);
                c.requery();
                break;

            }

        }
    }).setNegativeButton(NEGATIVE, new OnClickListener() 

{

        @Override
        public void onClick(DialogInterface dialog, int 

which) {

            dialog.cancel();
        }
    });
    AlertDialog alertDialog = dialog.create();
    alertDialog.show();

}

3 个答案:

答案 0 :(得分:0)

首先不应该在编码时调用对话框。 让我们Activity.onCreateDialog来初始化和维护对话框生命周期

活动提供了一种管理对话框创建,保存和恢复的工具。另请参阅onCreateDialog(int),onPrepareDialog(int,Dialog),showDialog(int)和dismissDialog(int)。

答案 1 :(得分:0)

看起来问题出在mDeleteID上。它在OnMenuItemSelected中设置,但不在button2的onClick侦听器中设置。

我猜测单击按钮时开关(mDeleteID)会失效。

答案 2 :(得分:0)

如果是按钮,则表示您没有为mDeleteId设置值。