在AlertDialog之后调用新意图

bri*_*ian 2 android

我尝试添加AlertDialog来重命名,如下面的代码:

Button b = (Button)findViewById(R.id.btn);
b.setOnClickListener(
    new OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder renameDialog = new AlertDialog.Builder(AActivity.this);
            renameDialog.setTitle("Rename");
            final EditText newName = new EditText(AActivity.this);
            newName.setText(FilePath[i]);
            renameDialog.setView(newName);
            renameDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface arg0, int arg1) {
                }
            });

            renameDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface arg0, int arg1) {
                }
            });

            renameDialog.show();
        }
    }

    Intent it = new Intent(AActivity.this, BActivity.class);
    it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
    startActivity(it); 
    }
});
Run Code Online (Sandbox Code Playgroud)

但是错误发生了.

Activity AActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@2b0278a8 that was originally added here
Run Code Online (Sandbox Code Playgroud)

这是因为新的Intent开始并暂停旧的.但是如何避免呢?

J. *_*aes 6

单击对话框上的按钮后启动意图,如下所示:

Button b = (Button)findViewById(R.id.btn);
b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    AlertDialog.Builder renameDialog = new AlertDialog.Builder(AActivity.this);
    renameDialog.setTitle("Rename");
    final EditText newName = new EditText(AActivity.this);
    newName.setText(FilePath[i]);
    renameDialog.setView(newName);

    renameDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface arg0, int arg1) {
            launchIntent();
        }
    });

    renameDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface arg0, int arg1) {
            launchIntent();
        }
    });

    renameDialog.show();
    }

    private void launchIntent() {
        Intent it = new Intent(AActivity.this, BActivity.class);
        it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
        startActivity(it); 
    }
});
Run Code Online (Sandbox Code Playgroud)

我把它放在两个按钮中,但是当用户点击确定时你可能只想要它,所以它应该只放在那里.你可以在没有这个功能的情况下做到这一点.