我正在使用下面的代碼向用戶顯示基本的文本框輸入。如何在Android中正確關閉警報對話框?
第一次一切正常。但是,我第二次調用對話框時,應用程序崩潰。
我懷疑這是因爲我沒有銷燬我添加到視圖中的EditText。所以...對於那些比我更有經驗的人......處理這個問題的正確方法是什麼?
下面你有我的代碼和logcat的
final EditText ipInput = new EditText(this);
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(ipInput);
builder.setTitle("Enter Server IP Address: ");
builder.setPositiveButton("Save", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//STORE IP ADDRESS
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//CANCELLED
}
});
builder.create();
而 「秀-ING」:
settings.setOnClickListener(new OnClickListener(){
public void onClick(View view){
builder.show();
}
});
堆棧跟蹤:
02-24 02:08:55.759: E/AndroidRuntime(582): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
02-24 02:08:55.759: E/AndroidRuntime(582): at android.view.ViewGroup.addViewInner(ViewGroup.java:3011)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.view.ViewGroup.addView(ViewGroup.java:2900)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.view.ViewGroup.addView(ViewGroup.java:2880)
02-24 02:08:55.759: E/AndroidRuntime(582): at com.android.internal.app.AlertController.setupView(AlertController.java:401)
02-24 02:08:55.759: E/AndroidRuntime(582): at com.android.internal.app.AlertController.installContent(AlertController.java:241)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.app.AlertDialog.onCreate(AlertDialog.java:314)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.app.Dialog.dispatchOnCreate(Dialog.java:335)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.app.Dialog.show(Dialog.java:248)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.app.AlertDialog$Builder.show(AlertDialog.java:907)
02-24 02:08:55.759: E/AndroidRuntime(582): at pirelli.app.ScanBarcode$4.onClick(ScanBarcode.java:90)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.view.View.performClick(View.java:3110)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.view.View$PerformClick.run(View.java:11934)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.os.Handler.handleCallback(Handler.java:587)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.os.Handler.dispatchMessage(Handler.java:92)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.os.Looper.loop(Looper.java:132)
02-24 02:08:55.759: E/AndroidRuntime(582): at android.app.ActivityThread.main(ActivityThread.java:4123)
02-24 02:08:55.759: E/AndroidRuntime(582): at java.lang.reflect.Method.invokeNative(Native Method)
02-24 02:08:55.759: E/AndroidRuntime(582): at java.lang.reflect.Method.invoke(Method.java:491)
02-24 02:08:55.759: E/AndroidRuntime(582): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
02-24 02:08:55.759: E/AndroidRuntime(582): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
02-24 02:08:57.150: I/Process(582): Sending signal. PID: 582 SIG: 9
請將完整的錯誤日誌發佈在受影響的代碼行旁邊。 – Mannaz 2012-02-24 00:28:31
添加完整的錯誤日誌。感謝您抽出時間:D – Eugen 2012-02-24 00:35:38