Android 关闭OnOptions ItemSelected(菜单项)中的alertDialog

Android 关闭OnOptions ItemSelected(菜单项)中的alertDialog,android,listview,android-alertdialog,Android,Listview,Android Alertdialog,我找了一会儿,没有找到解决办法。 我尝试了dialog.cancel()和dialog.discover和其他方法,但都无效 我有一个Listview,您可以通过单击选项菜单更改此Listview项目的名称,然后在Listview中选择一个项目,此时会打开一个alertDialog,您可以在其中写入新名称。 然后你可以说“保存”或“取消”。直到一切正常,但如果您再次按下一个项目,另一个alertDialog将打开,您可以再次更改名称。 这不应该发生,您应该只编辑一次名称 代码: public b

我找了一会儿,没有找到解决办法。 我尝试了
dialog.cancel()
dialog.discover
和其他方法,但都无效

我有一个Listview,您可以通过单击选项菜单更改此Listview项目的名称,然后在Listview中选择一个项目,此时会打开一个alertDialog,您可以在其中写入新名称。 然后你可以说“保存”或“取消”。直到一切正常,但如果您再次按下一个项目,另一个alertDialog将打开,您可以再次更改名称。 这不应该发生,您应该只编辑一次名称

代码:

public boolean onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.changeHersteller:
//通常情况下,所有物品都是非正常的
Toast.makeText(getApplicationContext(),R.string.takeHersteller,Toast.LENGTH\u LONG.show();
最终ListView ListView=(ListView)findViewById(R.id.listViewHersteller);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、最终整型位置、长id){
final AlertDialog.Builder=new AlertDialog.Builder(Hersteller.this);
final EditText EditText=新的EditText(Hersteller.this);
builder.setView(editText);
setPositiveButton(R.string.save,new DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
字符串oldName=listView.getItemAtPosition(position).toString();
字符串newName=editText.getText().toString();
//Log.i(标签、旧名称);
//Log.i(标签,新名称);
如果(!newName.isEmpty()){
updateFolder(主文件夹、旧名称、新名称);
setContent(主文件夹,列表视图);
}
dialog.discouse();//不工作
}
})
.setNegativeButton(R.string.abort,新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.discouse();//不工作
返回;
}
});
AlertDialog AlertDialog=builder.create();
alertDialog.setTitle(R.string.changeHersteller);
alertDialog.show();
}
});
返回true;
}
返回true;
}

在您关闭对话框后,可能会尝试返回
false
?请确保您关闭了正确的对话框。看看你周围有没有其他用相同名称初始化的对话框!不,两者都不起作用。请尝试将“dialog.dismise();”替换为“listView.setOnItemClickListener(null);”。效果不理想。因为如果你点击该项目,正常代码应该打开,然后一个新的意图。使用代码“listView.setOnItemClickListener(null)”,它不会打开新的意图。我现在替换了“dialog.disclose();”使用“recreate();”这不是我最喜欢的,因为有一点闪电,但它很管用:)
public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {

            case R.id.changeHersteller:
                //TODO bleibt "offen" wenn man nochmals auf ein item klickt
                Toast.makeText(getApplicationContext(), R.string.takeHersteller, Toast.LENGTH_LONG).show();
                final ListView listView = (ListView) findViewById(R.id.listViewHersteller);
                listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                        final AlertDialog.Builder builder = new AlertDialog.Builder(Hersteller.this);
                        final EditText editText = new EditText(Hersteller.this);
                        builder.setView(editText);
                        builder.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                String oldName = listView.getItemAtPosition(position).toString();
                                String newName = editText.getText().toString();
                                //Log.i(TAG, oldName);
                                //Log.i(TAG, newName);
                                if(!newName.isEmpty()){
                                    updateFolder(mainFolder, oldName, newName);
                                    setContent(mainFolder, listView);
                                }
                                dialog.dismiss(); //don't work
                            }
                        })
                                .setNegativeButton(R.string.abort, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        dialog.dismiss(); //don't work
                                        return;
                                    }
                                });
                        AlertDialog alertDialog = builder.create();
                        alertDialog.setTitle(R.string.changeHersteller);
                        alertDialog.show();
                    }
                });
                return true;
        }
        return true;
    }