我打开一个AlertDialog来向用户显示一个文本输入,以便命名一个新项目。这在第一次打开时工作正常。但是第二次单击启动对话框的按钮时,应用程序崩溃了。我收到这个错误:
12-02 16:01:04.205: E/AndroidRuntime(515): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我不确定这意味着什么或我称之为removeView()
。
这是我的代码:
public class ShoppingList extends Activity implements OnClickListener{
private AlertDialog.Builder m_alert;
private Context m_context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shopping_list);
m_context = getApplicationContext();
LayoutInflater inflater = (LayoutInflater) m_context.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.add_shopping_list, (ViewGroup) findViewById(R.id.layout_root));
m_alert = new AlertDialog.Builder(ShoppingList.this);
//final EditText input = new EditText(this);
//m_alert.setView(input);
m_alert.setView(layout);
final EditText input = (EditText)layout.findViewById(R.id.new_sl_name);
m_alert.setPositiveButton(R.string.add_button, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim();
Toast.makeText(m_context, value,
Toast.LENGTH_SHORT).show();
m_alert.create();
}
});
m_alert.setNegativeButton(R.string.cancel_button,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
m_alert.create();
}
}
);
// Add Button. . .
Button addButton = (Button)findViewById(R.id.add_sl_button);
addButton.setOnClickListener(this);
}
public void onClick(View v) {
if(!this.isFinishing())
m_alert.show();
}
}
答案 0 :(得分:2)
这很可能是因为您在错误的地方使用m_alert.create();
。
在对话框上查看本教程:Dialogs。
答案 1 :(得分:1)
改为使用m_alert.dismiss(),因此您的对话框会被取消,以后可以再次使用
答案 2 :(得分:1)
您可以在活动中覆盖onCreateDialog()来创建对话框,这将对您有所帮助 you can see details about dialog here
答案 3 :(得分:0)
这可能对某人有所帮助。我在笔记本电脑上构建了大部分应用程序。我刚把办公室放回去,让我的电脑爆炸了。当我尝试从我的电脑上的云存储加载我的项目时,似乎发生了一些构建错误。对于AlertDialog.Builder崩溃我注意到我在新的Android Studio安装上的电脑设置了我的" import"由于某种原因,android.support.v7.app.AlertDialog而不是android.app.AlertDialog。我删除了导入并重新选择了android.app.AlertDialog,一切正常。我不知道这是一个错误,也不知道Android Studio如何安装文件作为默认设置。对于类似的错误,删除所有导入文件并重新选择您认为适用的导入文件可能是值得的。祝你好运!