我试图找出我的问题出在哪里。我知道问题是 NullPointerException。但我不知道为什么。
我只有一个启动活动的按钮。
这是导致问题的代码部分。如果我删除 startactivity 它工作正常。并且该异常仅在 Intent.Method1 成功结束后发生。
methodtest(parm1);
try{
startActivity( IntentFactory.Method1(parm1, parm2) );
} catch(ActivityNotFoundException e){
showToast(getText(R.string.error1));
}
这是我的异常日志。
07-06 08:09:03.176: E/AndroidRuntime(2385): java.lang.RuntimeException: 无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.TabbedNavigationActivity}: java.lang.RuntimeException :无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}:java.lang.NullPointerException
07-06 08:09:03.176:E/AndroidRuntime(2385):原因:java。 lang.RuntimeException: 无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}: java.lang.NullPointerException
07-06 08:09:03.176: E/AndroidRuntime(2385): at net .apptest.app1.abstivities.AbstractHttpActivity.registerOnClickListener(AbstractHttpActivity.java:262)
07-06 08:09:03.176: E/AndroidRuntime(2385): 在 net.apptest.app1.activities.MainActivity.onCreate(MainActivity.java:309)
07-06 08:09:03.176: E/AndroidRuntime(2385) : 在 net.apptest.app1.activities.ExtrasActivity.onCreate(ExtrasActivity.java:18)
07-06 08:17:38.779: E/AndroidRuntime(2699): java.lang.RuntimeException: 无法启动活动 ComponentInfo{net. apptest.app1/net.apptest.app1.activities.TabbedNavigationActivity}:java.lang.RuntimeException:无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}:java.lang.NullPointerException
07-06 08:17:38.779:E/AndroidRuntime(2699):原因:java.lang.RuntimeException:无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}:java。 lang.NullPointerException
07-06 08:17:38.779: E/AndroidRuntime(2699): 在 net.apptest.app1.abstivities.AbstractHttpActivity.registerOnClickListener(AbstractHttpActivity.java:262)
07-06 08:17:38.779: E/AndroidRuntime (2699): 在 net.apptest.app1.activities.MainActivity.onCreate(MainActivity.java:309)
07-06 08:17:38.779: E/AndroidRuntime(2699): 在 net.apptest.app1.activities.ExtrasActivity。 onCreate(ExtrasActivity.java:18)
AbstractHTTPActivity 中的第 262 行:
* @param v
* The view an OnClickListener should be registered for
* @param id
* The id used to identify the item clicked (<code>ITEM_*</code>
* statics)
*/
protected void registerOnClickListener(View v, final int id) {
v.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
onItemClicked(id);
}
});
}
MainActivity 中的第 309 行:
mDB2S = (Button) findViewById(R.id.ButtonDB2S);
registerOnClickListener(mDB2S, ITEM_DB2S);
ExtrasActivity 中的第 18 行:
super.onCreate(savedInstanceState);
还有我的 layout.xml
<Button
android:id="@+id/ButtonDB2S"
android:layout_width="fill_parent"
android:layout_height="65dp"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_menu_help"
android:text="@string/db2" />
这是我的 IntentFactory.Method1。它只启动一个视频,它通常可以正常工作。我在第二个地方使用这种方法,它毫无例外地工作。Methodtest 是另一种运行良好的方法,只有 startActivity 行导致了这个问题。
public static Intent Method1 (String parm1, String parm2) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(parm1), "video/*");
return intent;
}
编辑:我已经调试了更多,并发现了 NullPointerException 发生的位置。在 MainActivity 上,我在启动时将按钮加载到 mDB2,它工作正常。在我退出由 IntentFactory.Method1 启动的视频播放器后,视图被重新加载,这意味着 MainActivity 再次启动。但是现在 mDB2 找不到按钮并且为 NULL。但是在第一次运行时它可以正常工作