У меня есть кнопка в макете активности. При нажатии кнопки появляется диалоговое окно. Когда я нажимаю за пределами диалога, диалог исчезает. (У меня нет проблем с этой проблемой).
Но когда я снова нажимаю на кнопку, я ожидаю, что диалоговое окно появится снова, но вместо этого произойдет сбой приложения.
I я просто играю с диалогами, чтобы реализовать его в моем реальном приложении
My stacktrace:
2020-08-01 12:00:33.377 9333-9333/com.example.spinner E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.spinner, PID: 9333
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4941)
at android.view.ViewGroup.addView(ViewGroup.java:4772)
at android.view.ViewGroup.addView(ViewGroup.java:4744)
at androidx.appcompat.app.AlertController.setupCustomContent(AlertController.java:657)
at androidx.appcompat.app.AlertController.setupView(AlertController.java:475)
at androidx.appcompat.app.AlertController.installContent(AlertController.java:233)
at androidx.appcompat.app.AlertDialog.onCreate(AlertDialog.java:279)
at android.app.Dialog.dispatchOnCreate(Dialog.java:403)
at android.app.Dialog.show(Dialog.java:302)
at androidx.appcompat.app.AlertDialog$Builder.show(AlertDialog.java:1009)
at com.example.spinner.MainActivity$1.onClick(MainActivity.java:40)
at android.view.View.performClick(View.java:6304)
at android.view.View$PerformClick.run(View.java:24803)
at android.os.Handler.handleCallback(Handler.java:794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
Код моей активности:
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<String> avc = new ArrayList<String>();
avc.add("sb");
avc.add("eerig");
avc.add("sb");
avc.add("eerig");
avc.add("sb");
avc.add("eerig");
avc.add("sb");
avc.add("eerig");
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, avc);
spinner = new Spinner(this);
spinner.setAdapter(adapter);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("abc");
builder.setMessage("abcde");
builder.setView(spinner);
builder.show();
}
});
}
}
У меня есть следующий код в строке 40 моего кода: builder.show();
Я хочу знать, почему я получаю эту ошибку, а также как ее решить.
Изображение диалогового окна (и макет) : введите описание изображения здесь