自定义对话框中的微调器给力关闭

时间:2012-06-06 06:37:02

标签: android

警报对话框显示得很好,当我点击微调器(微调器在警报对话框中)时,它会给力关闭,请帮助

private void showDialogue(Activity a) {
        try {
                        // Inflating a layout for Alert Dialog
            LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = layoutInflater.inflate(R.layout.prop_dialogue,null);
            view.findViewById(R.id.dialogue_btn_cancel).setOnClickListener(
                    Properties.this);
// Getting reference of Spinner      
   Spinner spin = (Spinner) view.findViewById(R.id.dialogue_spinner_count);
            setImage((ImageView) view.findViewById(R.id.dialogue_prop_icon),
                    getImageBitmap(position));
            setName((TextView) view.findViewById(R.id.dialogue_prop_name));
// Adapter for Spinner
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                Properties.this, R.array.prop_count,
                android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spin.setAdapter(adapter );
             spin.setOnItemSelectedListener(Properties.this);
            Builder b = new AlertDialog.Builder(this).setTitle("Properties")
                    .setNeutralButton("Submit",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {

                                }
                            });
            b.setView(view);
            b.show();
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

日志中显示的错误

06-06 12:09:22.971: E/AndroidRuntime(992): FATAL EXCEPTION: main
06-06 12:09:22.971: E/AndroidRuntime(992): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.view.ViewRoot.setView(ViewRoot.java:509)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.app.Dialog.show(Dialog.java:241)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.widget.Spinner.performClick(Spinner.java:257)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.view.View$PerformClick.run(View.java:8816)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.os.Handler.handleCallback(Handler.java:587)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.os.Looper.loop(Looper.java:123)
06-06 12:09:22.971: E/AndroidRuntime(992):  at android.app.ActivityThread.main(ActivityThread.java:4627)
06-06 12:09:22.971: E/AndroidRuntime(992):  at java.lang.reflect.Method.invokeNative(Native Method)
06-06 12:09:22.971: E/AndroidRuntime(992):  at java.lang.reflect.Method.invoke(Method.java:521)
06-06 12:09:22.971: E/AndroidRuntime(992):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-06 12:09:22.971: E/AndroidRuntime(992):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-06 12:09:22.971: E/AndroidRuntime(992):  at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:1)

protected Dialog onCreateDialog(int id){    
    Dialog dialog;
    switch(id) {

    case DIALOG_SEND_PM:
        Spinner spinner = (Spinner)findViewById(R.id.pm_server);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.server_array, android.R.layout.simple_spinner_item);             
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new MyOnItemSelectedListener())

        dialog = new Dialog(PM.this);
        dialog.setContentView(R.layout.send_pm_dialog);
        dialog.setTitle(R.string.send_pm);
        pmMessage = (EditText) dialog.findViewById(R.id.send_pm_box);
        Button sendPm = (Button) dialog.findViewById(R.id.send_pm_button);
        sendPm.setOnClickListener(PM.this);
        break;

    default:
        dialog = null;
   }