私はタブ付きのアプリケーションをタブとして持っています。アプリは約5歳です。このnullpointerはどうして起こりますか?
これは私が長い間持っていた同じコードですが、最後の数週間で、私は突然Googleのコンソールクラッシュログでnullpointersのカップルを持っています!
このコードでは、どのようにしてnullpointerが発生する可能性があるのかわかりません。誰かが私には見えないものを見ることができることを願っています。
private TextView switchSpace;
@Override
public void onActivityCreated(Bundle savedState) {
super.onActivityCreated(savedState);
initGUIComponents();
checkSpace();
}
private void initGUIComponents() {
switchSpace = getView().findViewById(R.id.rightText);
}
private void checkSpace() {
if (shouldShowComponent) {
switchSpace.setText(textToShow);
switchSpace.setVisibility(View.VISIBLE);
} else {
switchSpace.setVisibility(View.GONE);//NULLPOINTER IN CONSOLE!!
}
}
スタックトレースは、それがnullポインタを起こしonActivityCreated
でcheckSpaceへの呼び出しだということを示しています。繰り返しますが、それはいつもうまくいっています、私は合計で3つのクラッシュしかありません。これはどうしたらできますか?
ポインタが大変感謝しています。
EDIT、スタックトレース:xyztabs.MainFragment.onActivityCreated(MainFragment.java:81)
でxyztabs.MainFragment.checkSpace(MainFragment.java:268)ででandroid.support.v4 android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedStateでandroid.support.v4.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1442) で.app.Fragment.performActivityCreated(Fragment.java:2363) (FragmentManagerImpl.java :1740) android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1809) android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799) (android.support.v4.app)でandroid.support.v4.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2580) にあります。 FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:2367) android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:2
で
これはあなたのタブ/ 'ViewPager'の最初の断片です。 (また、あなたは 'ViewPager'を使用していますか?)あなたはスタックトレースを投稿できますか? 'Fragment'は' Activity'が作成されたときに直接ロードされていますか?あるいは、 'Activity'が作成された後、ユーザー入力後に' Fragment'/sを作成しますか?いくつの「断片」がありますか? – payloc
getView()の代わりにViewパラメータを使用してonViewCreatedでview.findViewByIdを実行します。 – Nepster
Nepster、なぜ重要ですか? (正直な質問!)私は疑問を持っている、それは常にこのように見えたか、そうではない、と私は以前に問題がなかった。 – Mathias