java - 自定义 AlertDialog 未在 runonuithread 方法中显示

标签 java android

这是代码...请让我知道我哪里出错了..我还为 ListView 设置了一个适配器,该适配器包含在 View v1 膨胀中...这一切都是在扩展响应中完成的smartfox 服务器...然后是 UI 线程上的以下进程..

 runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                                alert();
                            }

                        });


public void alert(){

            AlertDialog.Builder ab=new AlertDialog.Builder(RegActivity.this);
            LayoutInflater linf=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            View v1=linf.inflate(R.layout.proj_list, null);
            ab.setView(v1);
            ab.setTitle("Select a group");
            ListView lvprojlist=(ListView) findViewById(R.id.projdisplaylist);
            adplist=new ArrayAdapter<String>(RegActivity.this, R.layout.list_item, R.id.rowtext, projlist);
            lvprojlist.setAdapter(adplist);


            ab.setCancelable(false).setPositiveButton("Confirm", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();


                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();
                }
            });
            ab.create();
            ab.show();
                 }

这是我的 logcat 输出..

12-19 17:14:33.869: W/dalvikvm(699): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-19 17:14:33.889: E/AndroidRuntime(699): FATAL EXCEPTION: main
12-19 17:14:33.889: E/AndroidRuntime(699): java.lang.NullPointerException
12-19 17:14:33.889: E/AndroidRuntime(699):  at com.registersfsmodule.RegActivity.alert(RegActivity.java:392)
12-19 17:14:33.889: E/AndroidRuntime(699):  at com.registersfsmodule.RegActivity$3$2.run(RegActivity.java:178)
12-19 17:14:33.889: E/AndroidRuntime(699):  at android.os.Handler.handleCallback(Handler.java:587)
12-19 17:14:33.889: E/AndroidRuntime(699):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-19 17:14:33.889: E/AndroidRuntime(699):  at android.os.Looper.loop(Looper.java:130)
12-19 17:14:33.889: E/AndroidRuntime(699):  at android.app.ActivityThread.main(ActivityThread.java:3683)
12-19 17:14:33.889: E/AndroidRuntime(699):  at java.lang.reflect.Method.invokeNative(Native Method)
12-19 17:14:33.889: E/AndroidRuntime(699):  at java.lang.reflect.Method.invoke(Method.java:507)
12-19 17:14:33.889: E/AndroidRuntime(699):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-19 17:14:33.889: E/AndroidRuntime(699):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-19 17:14:33.889: E/AndroidRuntime(699):  at dalvik.system.NativeStart.main(Native Method)

最佳答案

您必须首先以相反的顺序更改此设置。

 ab.setTitle("Select a group");
 ListView lvprojlist=(ListView) v1.findViewById(R.id.projdisplaylist);
 ab.setView(v1);

您必须在找到ListView的ID后设置 View 。

也不要将 adplist 设置为全局变量。使其静态。

ArrayAdapter<String >adplist=new ArrayAdapter<String>(RegActivity.this, R.layout.list_item, R.id.rowtext, projlist);

关于java - 自定义 AlertDialog 未在 runonuithread 方法中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20680967/

相关文章:

android - 将渐进式 Web 应用程序添加到主屏幕

android - 圆形 Android Wear 模拟器是方形的

android - 如何检测 VideoView 是否正在播放视频或正在缓冲?

Android 添加按钮位于抽屉导航列表下方

java - 使用引用调用交换两个数字

java - SwingWorker 和命令行进程中断

java - 读取以 utf-8 编码的 ValidationMessages

java - JAXB:从 WebServiceTemplate 返回的子元素为 null

java - 关闭数据库连接后从 Oracle DB 读取 CLOB

android - JaCoCo Gradle - 排除类并覆盖包含