2013-02-14 70 views
2

嗨Android程序員,android可顯示來自非UI或非活動類的警報對話框

此問題先前被詢問。但沒有答案。所以我需要解決方案。其實我試圖從test.java(非活動)顯示Mainactivity.java呼叫框。

即使他們沒有UI編碼,這工作正常。如果該代碼依賴於UI,則意味着它的拋出錯誤。

活動類:

public class Mainactivity extends Activity 
{ 
    public void message() 
    { 
     Log.i("Success : Call from non-UI & non activity class");//Upto this line working if i called message() function from other non-activity class 
     DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      switch (which) 
      { 
       //Code 
      } 
     } 
    }; 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("FMS Status Message :- "); 
    builder.setMessage(msg) 
    .setPositiveButton("OK",dialogClickListener).show(); 

    } 
} 

非活動類:

public class test extends BroadcastReceiver 
{ 
    Mainactvity in = new Mainactvity(); 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     in.message(); 
    } 
} 

如果解決了,然後我的我的項目的主要目標將完成。請任何一個人幫助我。

在此先感謝。

+0

如果它引發錯誤 - 您能否發佈錯誤? – Anukool 2013-02-14 06:53:23

+1

爲什麼你不考慮從你的Mainactvity傳遞上下文和活動到類測試。而且你顯示的代碼是Android的糟糕編程實踐, – Sree 2013-02-14 06:55:05

回答

3

首先,針對Android不好的編程習慣,

Mainactvity in = new Mainactvity(); 

你不能讓Activity類的構造函數。

第二,您嘗試在BroadcastReceiver中的Dialog中顯示未引用Activity的UI元素。使用上下文活動(如果它涉及UI)或在BroadcastReceiver中顯示Dialog的應用程序。

+0

好吧,我明白了。是否有可能在測試類中顯示警告框..? – DillGates 2013-02-14 06:57:56

+0

我試過這個,但它不工作:Context mContext = getApplicationContext();最終AlertDialog.Builder alert = new AlertDialog.Builder(mContext); alert.setTitle(「有消息,從:」+到); alert.setCancelable(真); alert.show();注意測試類不是一項活動。請回復我。 – DillGates 2013-02-14 07:37:54

+0

其實我需要在測試(非活動)類中顯示一個警告框。而已..! – DillGates 2013-02-14 11:58:46

0

創建一個Constructor,您可以在其中獲得活動。這樣的 -

Activity activity; 
public test (Activity activity){ 
     this.activity = activity; 
} 

現在,用這個activity作爲參數 -

AlertDialog.Builder adb=new AlertDialog.Builder(activity);

因爲不能只用context顯示對話框。你需要爲此提供一個Activity

我回答了一個here

+0

這不起作用。對話框不是用傳遞的活動創建的,也沒有錯誤,但沒有創建對話框。 – Ekta 2016-06-22 13:44:45

+0

您可能會問一個新問題併發布您的代碼,以便我可以看到它。 – Darpan 2016-06-22 14:03:53

+0

我得到這個說它不工作,雖然好主意:java.lang.NullPointerException:試圖調用虛擬方法'android.content.resourcesResources $ Theme android.content.Context.getTheme()'對空引用 – Jonas 2016-12-08 12:33:09

相關問題