私のアクティビティには、コンテナアクティビティが作成されると2つのテキストビューのプリファレンスからテキストを設定するはずの、見えないフラグメントがあります。フラグメントのonActivityCreatedのtextviewテキストを設定するとクラッシュする
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
//Get new strings for name and motto if any
mName = mPrefs.getString(getString(R.string.pref_name) , getString(R.string.your_name));
mMotto = mPrefs.getString(
getString(R.string.pref_motto),
getString(R.string.your_motto)
);
//Find name and motto text views
TextView yourName = getActivity().findViewById(R.id.tv_your_name);
TextView yourMotto = getActivity().findViewById(R.id.tv_your_motto);
//Set name and motto text views
yourName.setText(mName);
yourMotto.setText(mMotto);
}
つのテキストビューがナビゲーション引き出しアンドロイドに含まれるナビゲーション・ヘッダ内に定義されている:headerLayout次のようにIはonActivityCreatedでこれを行います。ナビゲーション・ドロワはMainActivity内で初期化されます(マイ・フラグメントを保持するアクティビティ)。しかし、次のエラーでアプリケーションがクラッシュします。私はonCreateViewでテキストビューを設定しようとしましたが、同様にクラッシュしました。
--------- beginning of crash
08-21 17:03:27.311 4068-4068/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mehdi.memo, PID: 4068
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.mehdi.memo/com.mehdi.memo.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
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)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.mehdi.memo.AlarmFragment.onActivityCreated(AlarmFragment.java:145)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1442)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3221)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3171)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:552)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1333)
at android.app.Activity.performStart(Activity.java:6992)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2780)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
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)
キャストはどこですか?TextView yourName =(TextView)getActivity()。findViewById(R.id.tv_your_name); – Cloy
@Cloy私はキャスト構文を必要としないAndroid Studio 3.0を使用しています。 – JasonStack