1

私の Android アプリには、別のスレッドから呼び出されるイベント ハンドラーがあります。ハンドラーが呼び出されると、プライベート フィールドの一部が null になるため、null オブジェクトからメソッドにアクセスしようとしているため、NullPointerException が発生します。フィールドを以前にインスタンス化し、フィールドを他の場所に設定していないため、なぜそれらがnullになるのかわかりません。

これはクロススレッドと関係がありますか? フィールドは 1 つのスレッドで設定されますが、別のスレッドによってアクセスされます..? 権利はありません?それらは null であってはなりません.. 私はここで頭がおかしくなっていますが、おそらく、今は見つけられない小さな間違いです.

コードがないと答えにくいと思いますが、ここにソリューション全体を投稿することはできません。多分誰かが何を探すべきかについて正しい方向に私を向けることができます..?

4

1 に答える 1

0

私は最終的に解決策を見つけました。Android がアクティビティを 2 回開始していることがわかりました。そのため、明らかに 1 つのアクティビティではオブジェクトの状態は問題ありませんでしたが、別のアクティビティでは null のフィールドがありました。

デバイスの向きが変わると、Android は明らかにアクティビティを停止し、別のアクティビティを開始します。ここここで解決策を見つけました

そして、あなたが通り過ぎることはあまりなかったにもかかわらず、あなたの助けに感謝します..

于 2012-06-01T18:39:52.503 に答える