关闭onOptionsItemSelected中的alertDialog(MenuItem项)

时间:2017-01-08 14:44:25

标签: android listview alertdialog

我搜索了一会儿,发现没有解决方案。 我尝试了dialog.cancel()dialog.dismiss以及其他内容,但没有任何效果。

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

代码:

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;
    }

0 个答案:

没有答案