スプラッシュスクリーンアニメーションを使用してアプリを作成しています。アニメーションをキャンセルするオプションをユーザーに提供しました。
ホーム画面(ホーム)にはTextView(テレビ)があります。onCreate()の間に、そして再びonResume()の間にテキストを設定しました。
アニメーションで実行する場合のフローは、スプラッシュ画面->ホーム画面->その他のアクティビティです。テレビのテキストが設定され、ホーム画面に戻ると「リロード」され、別のテキストが設定されます。
アニメーションがキャンセルされると、ホーム画面から始まります:ホーム画面->その他のアクティビティ。
問題:アニメーションがキャンセルされると、ホーム画面はonCreate()中にtv2にテキストを設定し、次にonResume()にもう一度設定します。これを防ぐために「if」句を追加しました。
ここにコードがあります:
public class Home extends Activity {
public static boolean reload = true;
EditText tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tv= (EditText) findViewById(R.id.textViewFact);
tv.setText(updateText());
MORE STUFF ....
}
ユーザーがアニメーションをキャンセルすることを選択した場合、「リロード」は別のアクティビティからfalseに設定されます。
そして今onResumeのために:
public void onResume(){
super.onResume();
Log.i("test", "home activity before if: " + Home.reload);
if(!reload){
Log.i("test", "home activity inside if: " + Home.reload);
return;
}
else{
Log.i("test", "home activity inside else: " + Home.reload);
tv.setText(updateText());
}
}
ご覧のとおり、updateText()はonCreate()とonResume()で実行されますが、reloadがfalseの場合(次のlogcat出力で確認できるように)、updateText(を実行しないでください。 ) また。
01-30 08:44:50.140: I/test(551): home activity before if: false
01-30 08:44:50.140: I/test(551): home activity inside if: false
01-30 08:44:51.170: I/test(551): home activity before if: false
01-30 08:44:51.170: I/test(551): home activity inside if: false
なぜonResume()TWICE(ログ出力による)に入っているのか、それがELSE句内にある場合にupdateText()関数を実行しているのかはわかりません。ログ出力によると、tに達しました。