我正在尝试从我的应用程序打开浏览器。
这是我的代码:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(browserIntent);
但是我一直收到此错误:
04-08 18:07:26.117 6133-6133/com.example.android.quakereport E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.quakereport, PID: 6133
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult(Activity.java:4473)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:65)
at android.app.Activity.startActivityForResult(Activity.java:4430)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:711)
at android.app.Activity.startActivity(Activity.java:4791)
at android.app.Activity.startActivity(Activity.java:4759)
at com.example.android.quakereport.EarthquakeActivity.startIntent(EarthquakeActivity.java:53)
at com.example.android.quakereport.EarthquakeAdapter$1.onClick(EarthquakeAdapter.java:68)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
这是我的地震适配器代码:
currentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = QueryUtils.getURL(positionNum);
EarthquakeActivity ea = new EarthquakeActivity();
ea.startIntent(url);
}
});
这是我的QueryUtils代码:
`String url = "";
try {
JSONObject root = new JSONObject(SAMPLE_JSON_RESPONSE);
JSONArray earthquakesArray = root.getJSONArray("features");
JSONObject currentEarthquake = earthquakesArray.getJSONObject(arrayNum);
JSONObject propertires = currentEarthquake.getJSONObject("properties");
url = propertires.getString("url");
Log.v("JSON", "url" + url);
}catch (JSONException e) {
Log.e("JSON", "Error");
}
return url;`
我已经检查过了,网址正在工作。
有人可以帮助我吗?
切勿自己创建活动的实例。只有框架才能成功创建活动。
摆脱:
EarthquakeActivity ea = new EarthquakeActivity();
相反,如果EarthquakeActivity
是承载使用 EarthquakeAdapter
AdapterView
的活动,则将EarthquakeActivity
传递到 EarthquakeAdapter
构造函数中,以便适配器可以访问它。
需要在清单文件中添加此权限
<uses-permission android:name="android.permission.INTERNET"/>
您的异常与startActivityForResult有关,如前所述:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference at android.app.Activity.startActivityForResult(Activity.java:4473) at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
所以这可能是与你的隐含意图无关的东西的问题
android.app.Fragment
与android.support.v4.app.Fragment
不同,请确保您导入了正确的一个
还要确保您添加了互联网权限:
在清单中添加互联网权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
在清单文件中的清单标记之后添加它
它可以像:
<manifest ... >
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
...
</manifest>