2015-04-23 72 views
1

我有一個方法可以從我的應用程序中的多個位置調用。從另一個類調用StartActivity(intent)方法

public void openURL(String urlToOpen) { 
    if (!urlToOpen.startsWith("https://") && !urlToOpen.startsWith("http://")){ 
     urlToOpen = "http://" + urlToOpen; 
    } 

    final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlToOpen)); 

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    getApplicationContext().startActivity(intent); 
} 

我可以在其中創建方法的類中調用該方法,但我想打電話從其他地方同樣的方法在我的應用程序。

在一分鐘我得到一個NullPointerException

04-23 13:08:08.958 22761-22761/com.myapplication. E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.myapplication, PID: 22761 
    java.lang.NullPointerException 
     at android.content.ContextWrapper.startActivity(ContextWrapper.java:323) 
     at com.myapplication.MyMethodHandler.openURL(MyMethodHandler.java:213) 
     at com.myapplication.HistoryListActivity$1.onClick(HistoryListActivity.java:111) 

有什麼建議?

回答

0

簡單的答案,我應該早點發現。

public void openURL(Context context, String urlToOpen) { 
    if (!urlToOpen.startsWith("https://") && !urlToOpen.startsWith("http://")){ 
     urlToOpen = "http://" + urlToOpen; 
    } 

final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlToOpen)); 

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent); 

}

然後起身從試圖調用方法的類的語境:

調用startActivity方法時,我只是增加了一個Context參數的方法和使用該

Context context = this.getApplicationContext();

並且在調用該方法時通過了這個:

handler.openURL(context, urlToOpen);

相關問題