2015-12-30 57 views
-3

我知道這個問題已被問到,但我無法解決它。我想在Android的服務上顯示簡單的AlertDialog。我可以很好地表現出來的MainActivity但我對服務的一個問題,這是我的代碼:Android - 不是封閉類

CustomMainActivity.java:

public void popupDialogMain() 
{ 
    final Context context = getApplicationContext(); 
    Handler h1 = new Handler(context.getMainLooper()); 
    h1.post(new Runnable() { 
     @Override 
     public void run() { 
      if (mBXmpp) 
       mBXmppService.popupDialogMain2(); 
     } 
    }); 
} 

XmppService.java:

public static void popupDialogMain2() 
{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(CustomMainActivity.this) 
      .setMessage("Look at this dialog!") 
      .setCancelable(true) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        //do things 
       } 
      }); 
    AlertDialog alert = builder.create(); 
    builder.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
    alert.show(); 
} 

我在這條線上得到一個錯誤: AlertDialog.Builder builder = new AlertDialog.Builder(CustomMainActivity.this)

Android清單: 我加入這個權限:

android.permission.SYSTEM_ALERT_WINDOW 

而且我得到這個錯誤: 不是一個封閉類:CustomMainActivity

任何建議來解決呢?

+1

顯示來自服務的警報不是一個好習慣。試試這個[link](http://stackoverflow.com/a/19269931/4596556) –

+1

*「我知道這個問題已經被問到,但是我解決不了。」*鏈接到您閱讀的以前的問題/答案,不適用於您的代碼,並儘可能說出*爲什麼*您無法應用它們。 –

+2

可能重複[不是封閉類Java](http://stackoverflow.com/questions/20252727/is-not-an-enclosing-class-java) – malarres

回答

2

您不能從靜態方法訪問this

+0

如何解決它? – AFN

+1

您可以將'Context'作爲參數傳遞給'popupDialogMain2()' – 1615903

+0

@ 1615903非常感謝 – AFN