私は自分の問題がどこにあるかを理解しようとしています。問題が 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: Unable to start activity ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}: java.lang.NullPointerException
07-06 08:09:03.176: E/AndroidRuntime(2385): ネットで.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 = (ボタン) 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 です。ビデオを開始するだけで、通常は問題なく動作します。私は、例外なく機能する 2 番目の場所でこの方法を使用しています。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;
}
EDIT:もう少しデバッグして、NullPointerExceptionが発生する場所を見つけました。MainActivity では、起動時にボタンを mDB2 にロードしていますが、正常に動作します。IntentFactory.Method1 によって開始されたビデオプレーヤーを終了すると、ビューがリロードされます。つまり、MainActivity が再び開始されます。しかし、現在、mDB2 はボタンを見つけることができず、NULL になっています。しかし、最初の実行では問題なく動作します