Java 安卓系统-使自定义警报对话框在单击后消失

Java 安卓系统-使自定义警报对话框在单击后消失,java,android,listener,android-spinner,android-alertdialog,Java,Android,Listener,Android Spinner,Android Alertdialog,我试图使其在按下按钮时弹出一个alertdialogue,其中有一个微调器,在微调器中有三个选项,如何使其在选择其中一个选项时alertdialogue消失,每当我从微调器中选择某个内容时,下面的代码就会崩溃 下面是我的代码 public void AlertD() { LayoutInflater li = LayoutInflater.from(getActivity()); View promptsView = li.inflate(R.layout.abs, nul

我试图使其在按下按钮时弹出一个alertdialogue,其中有一个微调器,在微调器中有三个选项,如何使其在选择其中一个选项时alertdialogue消失,每当我从微调器中选择某个内容时,下面的代码就会崩溃

下面是我的代码

 public void AlertD() {

    LayoutInflater li = LayoutInflater.from(getActivity());

    View promptsView = li.inflate(R.layout.abs, null);
    // above I am setting the customview of the alert dialogue

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            getActivity());

    alertDialogBuilder.setView(promptsView);
    // here I am officially setting the custom layout

    // set dialog message

    alertDialogBuilder.setTitle(dialoguechoice + " Stretch Type");
    // alert dialogue title

    // create alert dialog
    final AlertDialog alertDialog = alertDialogBuilder.create();
    // above is creating the alert dialogue

    final Spinner mSpinner = (Spinner) promptsView
            .findViewById(R.id.sSType);
    // above is initializing the spinner

    // reference UI elements from my_dialog_layout in similar fashion

    mSpinner.setOnItemSelectedListener(new OnSpinnerItemClicked());

    // show it
    alertDialog.show();
    alertDialog.setCanceledOnTouchOutside(true);

} 
下面是我的听众

public class OnSpinnerItemClicked implements OnItemSelectedListener {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {
        switch (pos) {
        case (1):

            alertDialog.dismiss();
            break;
        }
    }


    @Override
    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

谢谢

请通过在问题中添加堆栈跟踪来定义“我下面的代码崩溃”。现在,它几乎是在黑暗中拍摄的。@MH。我添加了logcat@MH. 你不知道为什么它不起作用吗?我猜第178行是:
alertDialog.disease()
,这意味着
alertDialog==null
(由于NPE)。要么你的监听器在变量初始化之前被命中,要么它在被拆除之后被命中。
06-18 18:09:55.939: E/AndroidRuntime(4355): FATAL EXCEPTION: main
06-18 18:09:55.939: E/AndroidRuntime(4355): java.lang.NullPointerException
06-18 18:09:55.939: E/AndroidRuntime(4355):     at com.OptimusApps.stayhealthy.Body$OnSpinnerItemClicked.onItemSelected(Body.java:178)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.widget.AdapterView.fireOnSelected(AdapterView.java:882)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.widget.AdapterView.access$200(AdapterView.java:48)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:848)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.os.Handler.handleCallback(Handler.java:605)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.os.Looper.loop(Looper.java:137)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at android.app.ActivityThread.main(ActivityThread.java:4575)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at java.lang.reflect.Method.invokeNative(Native Method)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at java.lang.reflect.Method.invoke(Method.java:511)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
06-18 18:09:55.939: E/AndroidRuntime(4355):     at dalvik.system.NativeStart.main(Native Method)