从另一个类调用StartActivity(intent)方法

时间:2015-04-23 12:32:05

标签: android-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)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我之前应该发现的简单回答。

我刚刚在方法中添加了Context参数,并在调用startActivity方法时使用了此参数:

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);

}

然后从尝试调用该方法的类中获取了Context:

Context context = this.getApplicationContext();

并在调用方法时传递此信息:

handler.openURL(context, urlToOpen);