2013-09-25 111 views
0

我厌倦了在自定义列表视图中显示自定义对话框。恳求帮助显示错误对话框

代码:

more.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Dialog dialog = new Dialog(mContext.getApplicationContext()); 
       dialog.setTitle("Discription"); 
       dialog.setContentView(R.layout.dialog_item_simple_text); 
       TextView textViewItem = (TextView) dialog 
         .findViewById(R.id.textViewItem); 
       textViewItem.setText(data.short_description); 
       dialog.setCancelable(true); 
       dialog.setCanceledOnTouchOutside(true); 
       dialog.show();//<--Error at this point 
      } 
     }); 

有错误,如: logcat的按摩

FATAL EXCEPTION: main android.view.WindowManager$BadTokenException: Unable to add 
window -- token null is not for an application 
at android.view.ViewRootImpl.setView(ViewRootImpl.java:563) 
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:269) 
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
at android.app.Dialog.show(Dialog.java:281) 
at com.fashionbargains.adapter.DnSAdapter$1.onClick(DnSAdapter.java:88) 
at android.view.View.performClick(View.java:4240) 
at android.view.View$PerformClick.run(View.java:17721) 
at android.os.Handler.handleCallback(Handler.java:730) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 

我有一个是通过BaseTask类是扩展AsyncTask

回答

0

称为自定义适配器类你需要参考当前的活动,如...

替换此:

Dialog dialog = new Dialog(mContext.getApplicationContext()); 

与此:

Dialog dialog = new Dialog(YourClassname.this); 

编辑:

如果您的onClick是在你需要使用runOnUiThreadAsyncTask Class

runOnUiThread(new Runnable() { 

        @Override 
       public void run() { 
        Dialog dialog = new Dialog(mContext.getApplicationContext()); 
        dialog.setTitle("Discription"); 
        dialog.setContentView(R.layout.dialog_item_simple_text); 
        TextView textViewItem = (TextView) dialog 
          .findViewById(R.id.textViewItem); 
        textViewItem.setText(data.short_description); 
        dialog.setCancelable(true); 
        dialog.setCanceledOnTouchOutside(true); 
        dialog.show();//<--Error at this point 

    } 
}); 
+0

我试过了 –

+0

@Survivor你试过runOnUiThread吗? –

+0

我有扩展AsyncTask的基类,在doInBackground方法中,我打电话给我的自定义适配器类,并在公共视图getView方法 –