2つのフラグメントを持つ単純なアプリケーションがあり、横向きモードでは、両方のフラグメントが縦に並べて表示されます。フラグメントAを表示してからオプションを選択すると、私の問題は、ポートレートモードでフラグメントBを表示しているときです。ユーザーがメニューオプションを選択した場合、フラグメントBに関連付けられているビューをリフレッシュまたは再描画し、この作業を行う方法を理解できません。私はgetViewメソッドとgetLayoutInflaterメソッドを試しましたが、私は新しいビューを作成していると思うので、画面は変わりません。私はまた、フラグメントAを参照しようとしましたが、新しいフラグメントを作成し、フラグメントBを置き換えるルーチンを呼び出すことはできますが、表示されていないため、参照を取得できません。私が本当に必要とするのは、新しいビューを拡大するためにonCreateViewメソッドを再度呼び出すだけですが、これを実行しようとするいくつかのメソッドを試しましたが、再度呼び出されるonCreateViewを取得できません。どのようにこれについての任意の考えですか?Android force再構築するフラグメントView
答えて
ユーザーは、私がリフレッシュまたはフラグメントBに関連付けられており、この作品
onOptionsItemSelected()
で
を作成する方法を理解することはできませんビューを再描画したいメニューオプションを選択した場合は、アクティビティの呼び出しを持っていますフラグメント上のメソッドで、ウィジェットに新しいコンテンツを更新させるメソッド。または、フラグメントを置換するためにアクティビティにFragmentTransaction
を実行させます(フラグメントがもともとFragmentTransaction
で設定されていた場合)。あなたはFragmentTransaction
を行い、これを行うにはあまりにも難しいことではありませんが、答えはあなたのメニューが置かれている場所に依存しますreplace()
方法
を使用したいと思うでしょう
(すなわち、バックあなたの中にあなたonOptionsItemSelected()
呼び出しです親アクティビティ、またはフラグメントA/Bのいずれかにありますか?)。
簡略化のために、メニュー実装でonOptionsItemSelected()
が親アクティビティにあり、menu_option1が選択された場合にフラグメントの形を変えたいとします。あなたのメニューは(それがより多くの再利用可能なコードのためでなければなりません)あなたのフラグメントの1の子であるならば、一つの方法は、そのホストの活動を必要とすることで、
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
//...
switch (item.getItemId()) {
case R.id.menu_option1:
//do something
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new YourFragmentClass();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.your_fragment_id, newFragment);
transaction.addToBackStack(null);
transaction.commit();
return true;
case R.id.menu_option2:
//do something else;
return true;
default:
return super.onOptionsItemSelected(item);
}
}
:それはこのようになりますFragmentで定義されたインタフェースを実装し、コールバックとして使用することができます。 フラグメントクラス内のonOptionsItemSelected()
コールバックでは、このコールバックメソッドを呼び出すだけです。
一口のように聞こえますが、実際には2つのことを行う必要があります。あなたがR.id.your_fragment_idを交換するとき、あなたはそれがXMLで宣言されたことを想定している
public class MainActivity extends Activity implements FragmentA.onSelectedListener{
...
public void onSelected(){
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new YourFragmentClass();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.your_fragment_id, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
}
- 1. 再構築CGAL.sln can'r再構築INSTALL
- 2. Androidスタジオ2.0 - バックエンドクラスを再構築
- 3. スタックオブジェクトを再構築する
- 4. データベースを再構築する
- 5. Oracle View force not null制約
- 6. Android - Bottom Navigation View&Navigation Bar内のフラグメント
- 7. モーダルリストを再構築
- 8. トモグラフィ3D再構築
- 9. アレイの再構築
- 10. Nexus3再構築インデックスエラー
- 11. フォームセットの再構築
- 12. SQL Server 2005の再構築インデックスの再構築
- 13. Androidランチャーを構築する
- 14. フレームワーク再構築モジュールの構築を高速化するには
- 15. Androidのアクティビティーを破棄する再構築
- 16. NDK - プロジェクトを再構築する方法を構築しますか?
- 17. Androidフラグメント、再作成/再ロードせずに戻るフラグメント
- 18. Androidスタジオリリースマップアプリケーションの構築
- 19. Androidスタジオは常にアプリケーションを再構築します
- 20. Railsでチャンクファイルを再構築する
- 21. TFSブランチを再構築する
- 22. zlibストリームを再構築する
- 23. 再帰的にタプルを構築する
- 24. パンダの機能を再構築する
- 25. フルテキストインデックスを再構築する方法は?
- 26. git repoを "再構築"するには?
- 27. トップからNSWindowを再構築する
- 28. Django Haystackで再構築する方法
- 29. Fiddler:ファイルを再構築する
- 30. グローバルリストを再構築する方法
:これはあなたのフラグメントのクラスが
ですが、その後の活動では、あなたのようなものを見ることになることをふり。しかし、私のオリジナルの断片がプログラムで構築されていたらどうでしょうか? –
@IgorGanapolskyこれは、そのフラグメントのコンテナのIDです – dmSherazi