我尝试添加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开始并暂停旧的.但是如何避免呢?
单击对话框上的按钮后启动意图,如下所示:
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)
我把它放在两个按钮中,但是当用户点击确定时你可能只想要它,所以它应该只放在那里.你可以在没有这个功能的情况下做到这一点.