2016-06-24 19 views
0

私のMainActivityには、フラグメントのセットを含むナビゲーションドロワーがあります。Android:言語変更後に現在のフラグメントをリフレッシュ

ナビゲーションバーの上には、言語を表す2つのフラグがあります。ユーザーが言語をクリックすると、アプリはアプリ全体の言語を変更します。

すべてがスムーズに動作しています(アクティビティの更新、ナビゲーションドロワー、すべてのフラグメントが翻訳されます)。ただし、開いているフラグメントはありません。これは、ユーザーがナビゲーションドロワをクリックし、翻訳を再度見るためにフラグメントを選択する必要があることを意味します。

enter image description here

は、どのように私は、ユーザーがである現在のフラグメントをリフレッシュすることができますか?あなたはそれをコミットあなたのフラグメントへ

答えて

1

追加タグ:

fragmentManager.beginTransaction().replace(R.id.your_id, fragment, "Your_Fragment_TAG").commitAllowingStateLoss(); 

が、あなたは取り外しができ、リフレッシュのためにもう一度あなたのフラグメントを添付:あなたのポストのための

// Reload current fragment 
Fragment frg = null; 
frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG"); 
final FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.detach(frg); 
ft.attach(frg); 
ft.commit(); 
+0

感謝。私はこのコードを見たことがありますが、これは実行時には機能しません。私の場合、 'Your_Fragment_TAG'は知られていませんから? –

+0

findFragmentByTagを呼び出す前にタグを設定する必要があるので、 – motis10

+0

@ runtimeに対応する別のコードがありますか?または私はこれをユーザーに気付かせ(トーストとして)、または完全なアプリを再起動する必要がありますか?私の選択肢は何ですか? –

関連する問題