私はカスタムCommerceObjectsのArrayListを作成するSplashActivityを持っています。このリストは、他のアクティビティやフラグメントで、アプリケーションの残りの部分で使用されます。問題は、アプリケーションが停止してから再起動したときに、オブジェクトリストが初期化されていないと表示されることがあることです。解決策は、ArrayListがnullでないかどうかをチェックし、nullの場合はSplashActivityの起動を強制して、ArrayListを再作成することです。私は残りのアクティビティでonRestartメソッドでこれを実行しようとしましたが、まったく動作しません。SplashActivityを強制的に起動して別のアクティビティを再開する
たとえば、これは、SplashActivityで作成されたArrayListがnullの場合、MainActivityをチェックする方法です。
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onRestart() {
// If the full list of commerces is null or is empty, launch the SplashActivity.
// Here check if the ArrayList of CommerceObjects is null
if (SplashActivity._commerces == null || SplashActivity._commerces.size() == 0) {
Intent mIntent = new Intent(MainActivity.this, SplashActivity.class);
startActivity(mIntent);
this.finish();
}
super.onRestart();
}
...
}
ので、チェックする配列リストは "_commerces" です。 SplashActivityのpublic staticとしてデコレーションされたです。私はヌルでないかどうかを確認する必要があります。
私が紛失していることはありますか?
お時間を作ってください。これは問題の良いアプローチです。しかし、私は本当にSplashActivityを強制的に再起動する必要があります。 SplashActivityは、サーバーの状態とデータのバージョンをチェックして、別のバージョンのデータがあるかどうかを確認し、ダウンロードして、CommerceObjectのArrayListをリメイクするなど)を行います。 – flagg327
Mmm、あなたの問題は何ですか? onRestartでSplashActivityを起動できませんか? – nshmura
いいえ、アプリケーションを再開し、ArrayListを使用して何かを行う必要がある場合は、クラッシュして古典的なjava.lang.NullPointerExceptionをスローします。仮想メソッド 'int java.util.ArrayList.size()'をnull ArrayListが初期化されていないときに表示されるオブジェクト参照。 – flagg327