最初にプロジェクトの設定方法を説明します。
- 2つのクラスを持つAndroidライブラリプロジェクト:
- UserActivity-HolderClassの静的フィールドを使用します
- HolderClass-これには静的フィールドデータがあります
- ライブラリプロジェクトを参照するAndroidアプリケーションには、次の1つのクラスしかありません。
- StarterActivity-アプリが起動すると、onCreateで静的フィールドのデータが何らかの値に設定され、UserActivityが起動します
ここで、問題は次のとおりです。静的フィールドDataに対してjava.lang.NullPointerExceptionが発生することがあります。これは、初期化したことがない(またはその間に値が削除された)かのようです。テストデバイスでは発生しませんでしたが、クライアントデバイスからエラーレポートを受け取り続けています。私はそれがどのように起こるかを推測することしかできません-おそらくユーザーはアプリから離れて戻ってきて、システムはアプリケーションコンテキスト全体を再作成しますが、そのコンテキストでは、HolderClassには空の静的フィールドDataがありますか?
私の質問:
アクティビティのonCreateからのその静的フィールドの初期化は間違ったアプローチですか?ApplicationContextにデータを配置する必要がありますか?または何か他のことをしますか?
私はすべての提案を受け入れます。
PS説明からの視覚化に問題がある場合、私が言ったことすべてがコードでどのように見えるかを次に示します。
//ANDROIDAPPプロジェクトで パブリッククラスStarterActivityはActivity{を拡張します @オーバーライド public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //ライブラリでアクティビティを開始するだけ インテントmyIntent=new Intent(this、AutolaunchActivity.class); startActivityForResult(myIntent、1); } @オーバーライド protected void onActivityResult(int requestCode、int resultCode、Intent data){ super.onActivityResult(requestCode、resultCode、data); //ライブラリからのアクティビティが終了すると終了します 終了(); } } //ライブラリプロジェクト内 パブリッククラスHolderClass{ public static String Data; } パブリッククラスUserActivityはActivity{を拡張します @オーバーライド public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //初期レイアウト } public void someButtonClicked(){ HolderClass.Data.trim(); } }