Android-Actionbar选项卡+对话框



我有一个应用程序,它可以在没有这部分代码的情况下完美工作:

if(tab.getPosition() == 4)
    {
         AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
         builder.setTitle("Alert Dialog");
         builder.setMessage("This is Example of Alert Dialog with three Buttons");
         builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface arg0, int arg1) {
                 // TODO Auto-generated method stub
                 Toast.makeText(getApplicationContext(), "Ok is clicked", Toast.LENGTH_LONG).show();
             }
         });
         builder.show();
    }

在内部

public void onTabSelected(Tab tab, FragmentTransaction ft) {

我有5个选项卡+1,应该只显示对话框。。。当我点击这个标签时,我的应用程序崩溃了,出现错误:

11-22 14:32:00.818: E/AndroidRuntime(17853): FATAL EXCEPTION: main
11-22 14:32:00.818: E/AndroidRuntime(17853): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.view.ViewRootImpl.setView(ViewRootImpl.java:797)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:288)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.app.Dialog.show(Dialog.java:287)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at com.iecom.eresitev.WeekActivity.onTabSelected(WeekActivity.java:411)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:603)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at com.android.internal.app.ActionBarImpl$TabImpl.select(ActionBarImpl.java:1145)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at com.android.internal.widget.ScrollingTabContainerView$TabClickListener.onClick(ScrollingTabContainerView.java:658)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.view.View.performClick(View.java:4475)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.view.View$PerformClick.run(View.java:18786)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.os.Handler.handleCallback(Handler.java:730)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.os.Handler.dispatchMessage(Handler.java:92)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.os.Looper.loop(Looper.java:137)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at android.app.ActivityThread.main(ActivityThread.java:5419)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at java.lang.reflect.Method.invokeNative(Native Method)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at java.lang.reflect.Method.invoke(Method.java:525)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
11-22 14:32:00.818: E/AndroidRuntime(17853):    at dalvik.system.NativeStart.main(Native Method)

不要使用getApplicationContext,请尝试使用thisWeekActivity.this

解释:

您需要为Activity而不是Application提供当前上下文的参考。

参考:

活动上下文和应用程序上下文之间的差异

最新更新