1

リストがあるアプリケーションがあり、その中のアイテムをクリックすると、マップなどを含む詳細ビューが表示されます。

これはしばらく前から存在していましたが、昨日、奇妙なクラッシュ ログを取得しました。これは、数か月前にこのバージョンを展開して以来初めてのものです。クラッシュレポートによると、4.4 を実行している Samsung Galaxy S4 にありました。

基本的にそれは言う

FragmentManager manager = mapFragment.getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();

どうやら前の行の「getFragmentManager」がnullを返すため、begintransaction呼び出しでnullpointerexceptionをスローします。

私のmapfragmentは、次のように親linearlayout(リストを持つもの)で初期化されます:

userStatusDetailsLayout = (UserStatusDetailsLayout) inflater.inflate(R.layout.userstatsdetails, container, false);

私は直接電話する

userStatusDetailsLayout.initCompononents(activity);    

そのメソッドで、nullpointer の原因となった mapfragment を初期化します。

mapFragment = (SupportMapFragment) activity.getSupportFragmentManager().findFragmentById(R.id.statsDetailMap);

これは、テスト ユニットでもテスターでも見たことがありません。私は困惑しています。inflate と findfragment のタイミングと何か関係がありますか? (detailslayout を膨らませている理由は、誰かが実際にそれを見たいと思わない限り、やりたくないからです。彼らがそうするときは、それを保持して再利用したいからです。特に低速の電話では、マップを膨らませるにはかなりのコストがかかります)。

これを投稿して、これがいつ起こるか誰かが知っているかどうかを確認します...

4

1 に答える 1