ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

自定义对话框中的android – java.lang.IllegalStateException

2019-08-31 05:26:08  阅读:218  来源: 互联网

标签:illegalstateexception android-alertdialog android exception


我是Android新手,我正在开发自定义警报对话框

我想点击编辑按钮打开另一个对话框,代码如下

 if (v.getId() == R.id.edt_order) {                                  
        System.out.println(" edit buton click");                    
        System.out.println("Click my Order");
            System.out.println(" edit clickkkkkkkkkkkkkk");
         LayoutInflater li = LayoutInflater.from(getApplicationContext());
         View promptsView = li.inflate(R.layout.prompts, null);

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

         // set prompts.xml to alertdialog builder  
         alertDialogBuilder.setView(promptsView);    

         final EditText userInput = (EditText) promptsView
         .findViewById(R.id.editTextDialogUserInput); 

         // set dialog message
         alertDialogBuilder
         .setCancelable(false)
         .setPositiveButton("OK",
                 new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog,int id) {
                 // get user input and set it to result 
                 // edit text
                 //    result.setText(userInput.getText());

                 System.out.println("Click ok");    
                // insertData(userInput.getText().toString().trim());
                 Toast.makeText(getApplicationContext(), "Category added", 5000).show();
                 // loadSpinnerData();
             }
         })
         .setNegativeButton("Cancel",
                 new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog,int id) {
                 dialog.cancel();
             }
         }); 

         // create alert dialog   
          alertDialog = alertDialogBuilder.create();

         // show it
         alertDialog.show();                 
    }          

但我得到一个例外,我的日志猫输出如下

01-23 14:46:57.438: D/AndroidRuntime(660): Shutting down VM
01-23 14:46:57.448: W/dalvikvm(660): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
01-23 14:46:57.558: D/dalvikvm(660): GC_FOR_MALLOC freed 3899 objects / 202144 bytes in 99ms
01-23 14:46:57.568: E/AndroidRuntime(660): FATAL EXCEPTION: main
01-23 14:46:57.568: E/AndroidRuntime(660): java.lang.IllegalStateException: Could not execute method of the activity
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.View$1.onClick(View.java:2072)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.View.performClick(View.java:2408)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.View$PerformClick.run(View.java:8816)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.os.Handler.handleCallback(Handler.java:587)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.os.Handler.dispatchMessage(Handler.java:92)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.os.Looper.loop(Looper.java:123)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-23 14:46:57.568: E/AndroidRuntime(660):  at java.lang.reflect.Method.invokeNative(Native Method)
01-23 14:46:57.568: E/AndroidRuntime(660):  at java.lang.reflect.Method.invoke(Method.java:521)
01-23 14:46:57.568: E/AndroidRuntime(660):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-23 14:46:57.568: E/AndroidRuntime(660):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-23 14:46:57.568: E/AndroidRuntime(660):  at dalvik.system.NativeStart.main(Native Method)
01-23 14:46:57.568: E/AndroidRuntime(660): Caused by: java.lang.reflect.InvocationTargetException
01-23 14:46:57.568: E/AndroidRuntime(660):  at com.example.demoekot.MainScreen.clickHandler(MainScreen.java:524)
01-23 14:46:57.568: E/AndroidRuntime(660):  at java.lang.reflect.Method.invokeNative(Native Method)
01-23 14:46:57.568: E/AndroidRuntime(660):  at java.lang.reflect.Method.invoke(Method.java:521)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.View$1.onClick(View.java:2067)
01-23 14:46:57.568: E/AndroidRuntime(660):  ... 11 more
01-23 14:46:57.568: E/AndroidRuntime(660): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.ViewRoot.setView(ViewRoot.java:509)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
01-23 14:46:57.568: E/AndroidRuntime(660):  at android.app.Dialog.show(Dialog.java:241)
01-23 14:46:57.568: E/AndroidRuntime(660):  ... 15 more

即使我的redcross按钮工作正常,我已经使用相同的代码多次显示AlertDialog与TextView,但我没有得到代码的问题.任何帮助都非常感谢.提前致谢.

现在我得到了我想要的任何东西,但编辑和保存两者都有重叠.我想隐藏编辑(蓝色按钮)并清楚地显示可见的保存按钮.

解决方法:

如果您阅读getApplicationContext()中的文档,您会发现只有在需要生命周期与当前上下文不同的Context时才应该使用它.这不适用于您的示例并将此对象用作className类型的对象.我想在这里您可以使用

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

要么

  AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ClassNAme.this);

两者都应该有效.

标签:illegalstateexception,android-alertdialog,android,exception
来源: https://codeday.me/bug/20190831/1773288.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有