0

私は自分の問題がどこにあるかを理解しようとしています。問題が 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 になっています。しかし、最初の実行では問題なく動作します

4

1 に答える 1

0

私は自分の問題を解決しました。解決策は非常に簡単だったので、以前は確認していませんでした。ボタンをランドスケープレイアウトに追加するのを逃しました:(

ムービー プレーヤーが終了した後、アプリは向きを変更します。ランドスケープ レイアウトでボタンが見つからなかったため、NullPointerException が発生しました。

事前に確認しておらず申し訳ありません。

于 2012-07-06T09:21:44.063 に答える