リロードすることをお勧めしActivity
にAndroidの?
それを行う最善の方法は何でしょうか?this.finish
そしてthis.startActivity
活動とはIntent
?
リロードすることをお勧めしActivity
にAndroidの?
それを行う最善の方法は何でしょうか?this.finish
そしてthis.startActivity
活動とはIntent
?
回答:
あなたは単に使うことができます
finish();
startActivity(getIntent());
Activity
内からを更新します。
recreate()メソッドの後に点滅するのを見たくない人は、単に
finish();
overridePendingTransition(0, 0);
startActivity(getIntent());
overridePendingTransition(0, 0);
これは、プリファレンスの変更からの復帰を変更した後にアクティビティをリロードするために行うことです。
@Override
protected void onResume() {
super.onResume();
this.onCreate(null);
}
これにより、本質的にアクティビティーがそれ自体を再描画します。
更新: これを行うためのより良い方法は、recreate()
メソッドを呼び出すことです。これにより、アクティビティが再作成されます。
Intentを使用してアクティビティをリロードするために与えられた以前の回答を見ました。これらは機能しますが、Activityクラス自体に指定されているrecreate()メソッドを使用して同じことを行うこともできます。
これを書く代わりに
//ダイアログボックスを閉じたときにメインアクティビティを更新します
Intent refresh = new Intent(this, clsMainUIActivity.class);
startActivity(refresh);
this.finish();
これはこれだけを書くことによって行うことができます
recreate();
recreate()
私の解決策でした-「StartActivityForResult」を使用してアクティビティを開始すると動作が壊れたため、アクティビティを「再開」しても機能しませんでした。
Androidには、アクティビティの作成と破棄を処理するプロセス管理システムが含まれており、手動でアクティビティを再開することで得られるメリットはほとんどありません。詳細については、Application Fundamentalsをご覧ください。
ただし、onPauseメソッドとonStopメソッドが保持する必要のないリソースを確実に解放し、onLowMemoryを使用してアクティビティの必要性を最小限に抑えることをお勧めします。
場合によっては、それが他の場合のベストプラクティスである場合、次のように使用することを選択した場合、コンテキスト駆動型であることはお勧めできません。アクティビティから息子に渡す最良の方法です。
Intent i = new Intent(myCurrentActivityName.this,activityIWishToRun.class);
startActivityForResult(i, GlobalDataStore.STATIC_INTEGER_VALUE);
問題は、activityIWishToRunからfinish()を実行するたびに、実際のアクティビティに戻ります
これをしばらく試してみたところ、アクティビティを再開したことによる予期しない結果は見つかりませんでした。また、これはAndroidがデフォルトで向きを変更したときに行う動作と非常に似ていると思います。そのため、同じような状況でそれを行わない理由はわかりません。
私は同じ問題を抱えています
import android.support.v4.content.IntentCompat;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
このコードは私のために働きます。Android API 17
アクティビティでは、アクティビティrecreate()
を「再作成」するために呼び出すことができます(API 11+)
設定:私のような別のアプローチだったlaunchMode
に私の活動のをsingleTop
して呼び出すことなくfinish()
、ただstartActivity(getIntent())
仕事をするの。との両方で新しいデータに注意する必要がonCreate()
ありonNewIntent
ます。Sushの方法では、アプリケーションはAMAN SINGHが言ったように点滅する可能性があります。しかし、AMAN SINGHのアプローチは、彼が「瞬き」問題を修正したとしても、どういうわけか、不必要である新しいアクティビティを作成します。
この質問には遅すぎますが、誰かが解決策を探しているなら、ここにあります。
ログイン後、同じ問題が発生したため、
@Override
protected void onRestart() {
this.recreate();
super.onRestart();
}