0

文字列値「url」をフラグメントに渡して、Web ビューに表示しようとしています。次のエラーが発生し続けます。

java.lang.NullPointerException

これは私のコードです:

protected void goToTab1View() {
    if(mTabState != TAB1_STATE){
        mTabState = TAB1_STATE;
        Toast.makeText(getActivity(), "goToTabView1: " + url, Toast.LENGTH_SHORT).show();
        FragmentManager fm = getFragmentManager();
        if(fm!= null){
            //Perform fragment transaction
            FragmentTransaction ft = fm.beginTransaction();
            FragTab1 f = new FragTab1();
            f.setString(url);
            ft.replace(R.id.fragment_content, f);
            ft.commit();
        }
    }
}

フラグメントを正しくアタッチしていないと思いますか?? 私はフラグメントに慣れていないので、質問が明らかな場合はお詫び申し上げます。どんな助けでも大歓迎です。

スタックトレース:

 01-11 13:16:06.671: E/AndroidRuntime(23045): FATAL EXCEPTION: main
01-11 13:16:06.671: E/AndroidRuntime(23045): java.lang.NullPointerException
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.widget.Toast.<init>(Toast.java:92)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.widget.Toast.makeText(Toast.java:238)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.example.tabdemo.FragTab1.setString(FragTab1.java:57)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.example.tabdemo.TabFragment.goToTab1View(TabFragment.java:60)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.example.tabdemo.MainActivity$1.onClick(MainActivity.java:34)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.view.View.performClick(View.java:4202)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.view.View$PerformClick.run(View.java:17340)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.os.Handler.handleCallback(Handler.java:725)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.os.Looper.loop(Looper.java:137)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at android.app.ActivityThread.main(ActivityThread.java:5039)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at java.lang.reflect.Method.invokeNative(Native Method)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at java.lang.reflect.Method.invoke(Method.java:511)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-11 13:16:06.671: E/AndroidRuntime(23045):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1

Fragment内setString()にToast を表示しているようです。FragTab1それがあなたが直面している理由ですNullPointerException

setString()内部のToast Display を削除FragTab1し、アプリを実行します。

FragTab1 が Fragment Container にアタッチされるまで、getActivity()以下のように文字列を設定して FragTab1 Fragment を置き換える前にアクセスしているものを取得することはできません。

f.setString(url);

これにより、Toast を表示している FragTab1 の setString() が呼び出され、コンテキストを取得できなかったため、NullPointerException が発生します。

于 2013-01-11T13:20:23.523 に答える