0

現在、私はこれをすべての活動で使用しています。

@Override
public void onRestart(){
    onStart();
    onResume();
    runFadeInAnimation();
}

それは「機能します」が、これが将来私を台無しにするかどうかはわかりません。それがまぐれによって機能するのか、それともこれがどのように行われるべきなのかはわかりません。私はそれを経由して実行してみました:

@Override
public void onRestart(){
    super.onRestart();
    runFadeInAnimation();
}

しかし、できません。すべてのアクティビティがメインアクティビティを拡張し、superで実行すると、メインアクティビティonRestart()を呼び出そうとしてクラッシュします。(メインもフェードインしたいので、そこでアニメーションも実行しています)

どうすればこれを適切に処理し、無意識のうちにバグを引き起こさないようにできますか?

4

1 に答える 1

0

ここでアクティビティライフサイクルを見てください: http://developer.android.com/reference/android/app/Activity.html

あなたがしていることは、実際には、活動の再開時に自動的に起こることになっていることと冗長です。

メインアクティビティをどのように定義し、どのように拡張するかについて、設計上の問題が発生している可能性があります。私が提案をすることができれば、あなたがあなたのすべての活動に共通する活動に何かを持っているなら、あなたが拡張できる「親」活動にそれらを入れてください。「メイン」アクティビティを定義する方法には、他のアクティビティには適さない詳細が含まれているようです。したがって、「親」アクティビティクラスを設定したら、それを拡張して「メイン」アクティビティを作成し、そこに「フェードイン」ロジックを配置します。

最終的には、有害な結果を招くことなくsuper.onRestartを呼び出すことができるはずです。

于 2011-09-11T21:07:12.547 に答える