2015-08-21 39 views
1

我是Android開發新手,並設法在StackOverflow上獲得這麼多的閱讀問題和解答。謝謝大家。如何從broadcastReceiver回調中訪問MainActivity

我想出了一個我無法弄清楚的問題。我看過類似的問題,但答案並不清楚。請幫我解決這個問題。

我想調用另一個類的主要活動的方法。當我嘗試調用該方法時,該應用程序崩潰。下面是代碼:

在類文件:

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     MainActivity MainActivity = new MainActivity(); 
     MainActivity.ligaInternet(); 
    } 
} 

在在MainActivity文件:

protected void ligaInternet() { 
    ConnectivityManager connMgr = (ConnectivityManager) 
      getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
    if (networkInfo != null && networkInfo.isConnected()) { 
     String urlText="http://www.regiprof.com/regiprof_sms.php"; 
     String stringUrl = urlText.toString(); 
     new DownloadWebpageTask().execute(stringUrl); 
    } 
} 

我怎麼能叫ligaInternet()功能?

回答

1

你可以嘗試

MainActivity currentActivity = ((MainActivity)context.getApplicationContext()).getCurrentActivity(); 
currentActivity.ligaInternet(); 
+0

天使島,試過你sugestion和 「getCurrentActivity()」 得到一個錯誤說:canot解決方法。還有什麼想法?先謝謝你。 –

+0

對不起,我不明白在哪裏包括我的代碼示例。你能用我的代碼snipet顯示我嗎? –

+0

似乎別人已經有你的問題的解決方案http://stackoverflow.com/questions/6468463/start-activity-inside-onreceive-broadcastreceiver –

0

嘗試。 老兄,使ligaInternet方法靜態,只有靜態方法可以從類名引用。語句MainActivity.ligaInternet()現在不正確,因爲ligaInternet()是一個非靜態方法,因此它不能從類名引用。並從方法中刪除受保護的關鍵字。

+0

我認爲「MainActivity.ligaInternet()」中的首字母「M」是海報部分的拼寫錯誤。這會導致編譯錯誤,而不是崩潰。 –

+0

正如我所說的,將ligaInternet()更改爲「public static void ligaInternet()」,並讓我知道是否遇到任何問題。 –

+0

Arpit Agrawal你的消化不適用於我,因爲我無法將函數ligaInternet設置爲公共靜態。任何其他的消化?提前謝謝你們! –

0

可能的方法。將以下內容放入廣播接收器中。

Intent intent2open = new Intent(context, MainActivity.class) 

現在裏面MainActivity創建一個新的方法如下:

public void onNewIntent (Intent intent) { 
ligaInternet(); 
    // This simply calls the function. 
    //so make sure the function is 
    //written somewhere inside 
//MainActivity as well. 
} 
+0

嘗試過你的消化,並沒有像以前那樣得到應用程序崩潰,但不調用ligInternet()函數。在boradcast接收器上,我收到一條警告,說intent2open從未使用過。我認爲我正走在正確的軌道上,但還沒有到那個時候。任何進一步的幫助將被認可 –

相關問題