2011-01-14 116 views
1

我做了一個類來處理一個簡單的消息彈出,所以我可以在整個應用程序中重用代碼。我似乎無法獲得正確的背景。這是從所有地方調用的,並且通常是直接沒有UI的類。請參見下面的行...你怎麼指定一個語境

public class msg { 

    public void msghand(String message, Exception e) { 
    { 

     String s; 

     if (e != null) 
     { 
      s= message + "\n" + e.getLocalizedMessage() + " " + e.toString(); 
     } 
     else 
     { 
      s= message ; 
     } 

     new AlertDialog.Builder( getApplicationContext()) <<<< HERE IS THE PROBLEM 
     .setMessage(s) 

     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int whichButton) { 
      } 
     }) 
     .create() 
     .show(); 


    } 

    } 
} 

回答

2

是否可以將Context作爲參數傳遞?

public void msghand(String message, Exception e, Context context) { 
    ... 
    new AlertDialog.Builder(context) 
    ... 

你在哪裏從事沒有上下文的工作?服務沒有UI,但仍有Context。

編輯:

您可以創建一個小的消息服務,是靜態訪問,並且應用程序啓動時創建的。例如:

class MyActivity extends Activity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     // create the Message service that can be statically accessed 
     s_MessageService = new MessageService(getApplicationContext()); 
     ... 
    } 

    public static MessageService getApplicationMessageService() 
    { 
     return s_MessageService; 
    } 

    private static MessageService s_MessageService; 
} 

凡MessageService實施適當

class MessageService 
{ 
    public MessageService(Context messageContext) 
    { 
     m_MyContext = messageContext; 
    } 

    public msghand(String message, Exception e) 
    { 
     // exactly the same as before, except using the stored context 
    } 

    Context m_MyContext = null; 
} 

你DBHelper類可以通過

MyActivity.getApplicationMessageService().msghand(...); 
+0

我確實已經把Context傳遞給了這個,但是我想調用它的一些地方只是類,比如DBHelper,並且沒有UI。 – 2011-01-14 19:26:04

0

添加上下文關係中類味精的構造函數的參數,並從任何活動正在使用它在通過此。

+0

使用它是否必須是一個 「活動」 本身?像公共類xtz延伸Activity()? – 2011-01-14 19:26:36