タグ付けされた質問 「android-nested-fragment」

6
フラグメント内のフラグメント
これが実際にAndroid APIのバグなのかどうか疑問に思っています。 私はそのような設定をしています: ┌----┬---------┐ | | | | 1 | 2 | | |┌-------┐| | || || | || 3 || └----┴┴-------┴┘ 右側のペインにフラグメント#2(検索画面)をロードするメニューです。 結果リストであるフラグメント#3を含む検索画面です。 結果リストはいくつかの場所で使用されます(それ自体が機能する高レベルのフラグメントとしても含まれます)。 この機能は電話で完全に機能します(1と2および3はActivityFragmentsです)。 ただし、このコードを使用した場合: FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); Fragment frag = new FragmentNumber2(); if(toLoad != null) frag.setArguments(toLoad); transaction.replace(R.id.rightPane, frag); transaction.commit(); 水平線形レイアウトのR.id.leftPaneとR.id.rightPaneはどこですか<fragment>。 上記のコードが常駐しているフラグメントを削除し、それを新しいフラグメントに置き換えることは私の理解です。このコードが2回目に実行されると、次の例外が発生するため、明らかにそうではありません。 07-27 15:22:55.940: ERROR/AndroidRuntime(8105): Caused by: …

13
Fragment Inside Fragment
フラグメント内のフラグメントの操作に関してサポートが必要です。実際には、戻るボタンを押すときに問題が発生しています。アプリケーションのメイン画面にはボタンがあり、各ボタンビューを押すと新しいフラグメントで置き換えられます(そのフラグメントは別のフラグメント内に含まれています)。フラグメントを動的に追加/置換することは正常に機能しています。ボタン1を押すとフラグメントが置き換えられ、ボタンを押すと同じことが起こりますが、ボタンが再び、例外を得ました: "Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with another fragment for com........ fragmentname" フラグメントまたは内部フラグメントがすでに追加されていることを意味します。それらを再度追加しようとしています。サポートのおかげで、誰もがフラグメント内でフラグメントを操作し、問題なく前後に移動する方法を知っています。 MainActivity、フラグメントは動的に追加および置換されます。 public class FragmentInsideFragmentTestActivity extends Activity { private Button button1; private Button button2; private Button button3; private Button button4; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) …

5
サポートライブラリを使用しないAndroid 4.0、4.1(<4.2)でのネストされたフラグメントのベストプラクティス
私は4.0および4.1タブレット用のアプリを書いています。そのため、サポートライブラリ(必要でない場合)を使用したくないので、4.x APIのみを使用します。 だから私のターゲットプラットフォームは次のように非常によく定義されています:&gt; = 4.0および&lt;= 4.1 アプリにはマルチペインレイアウト(2つのフラグメント、左側に小さなフラグメント、右側に1つのコンテンツフラグメント)とタブ付きのアクションバーがあります。 これに似ています: アクションバーのタブをクリックすると、「外部」フラグメントが変更され、内部フラグメントは2つのネストされたフラグメントを持つフラグメントになります(1.小さな左リストフラグメント、2。幅の広いコンテンツフラグメント)。 今、フラグメント、特にネストされたフラグメントを置き換えるためのベストプラクティスは何なのかと思っています。ViewPagerはサポートライブラリの一部です。このクラスのネイティブ4.xの代替はありません。私の意味では「廃止された」ように見えます。- http://developer.android.com/reference/android/support/v4/view/ViewPager.html 次に、Android 4.2のリリースノートを読みますChildFragmentManager。これはに適していますが、4.0と4.1を対象にしているため、これも使用できません。 ChildFragmentManager 4.2でのみ利用可能です http://developer.android.com/about/versions/android-4.2.html#NestedFragments http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager() 残念ながら、Android開発者ガイド全体でさえ、サポートライブラリなしでフラグメントを使用するためのベストプラクティスを示す良い例はほとんどありません。特にネストされたフラグメントについては何もありません。 だから私は疑問に思っています:サポートライブラリとそれに付属するすべてのものを使用せずにネストされたフラグメントで4.1アプリを書くことは単に不可能ですか?(Fragmentなどの代わりにFragmentActivityを使用する必要がありますか?) または、ベストプラクティスは何ですか? 私が現在開発で抱えている問題は、まさにこの声明です: http://developer.android.com/about/versions/android-4.2.html#NestedFragments Android Support Libraryはネストされたフラグメントもサポートするようになり、ネストされたフラグメントデザインをAndroid 1.6以降で実装できます。 注:レイアウトにが含まれている場合、レイアウトをフラグメントにインフレートすることはできません&lt;fragment&gt;。ネストされたフラグメントは、フラグメントに動的に追加された場合にのみサポートされます。 ネストされたフラグメントをXMLで定義しているため、次のようなエラーが発生するようです。 Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_ …

13
ViewPagerでタブを使用すると「Java.lang.IllegalStateExceptionアクティビティが破棄されました」というエラーが発生する
タブモードでActionBarSherlockを使用して構成されるアプリケーションがあります.5つのタブがあり、各タブのコンテンツはフラグメントを使用して処理されます。しかし、tab2の場合、フラグメントファイルがあり、そのxmlファイルにはViewPager要素が含まれており、ViewPager要素にはいくつかのフラグメントページがあります。最初にアプリケーションを起動したときに、問題なくタブを切り替えることができますが、2回目にtab2を押すと、上記のエラーが発生します。主な活動は次のとおりです。 public class MainActivity extends SherlockFragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); ActionBar.Tab tab1 = actionBar.newTab().setText("Tab1"); ActionBar.Tab tab3 = actionBar.newTab().setText("Tab3"); ActionBar.Tab tab2 = actionBar.newTab().setText("Tab2"); ActionBar.Tab tab4 = actionBar.newTab().setText("Tab4"); ActionBar.Tab tab5 = actionBar.newTab().setText("Tab5"); Fragment fragment1 = new Tab1(); Fragment fragment3 = new Tab3(); Fragment …

17
Android 4.2:ネストされたフラグメントによるバックスタックの動作
Android 4.2では、サポートライブラリがネストされたフラグメントのサポートを取得しました。こちらをご覧ください。私はそれをいじってみましたが、バックスタックとgetChildFragmentManager()に関する興味深い動作/バグを見つけました。getChildFragmentManager()およびaddToBackStack(String name)を使用する場合、戻るボタンを押すと、システムはバックスタックを前のフラグメントまで実行しません。一方、getFragmentManager()を使用する場合およびaddToBackStack(String name)、戻るボタンを押すと、システムは前のフラグメントに戻ります。 私にとって、この動作は予想外です。デバイスの[戻る]ボタンを押すと、フラグメントが子のフラグメントマネージャーでバックスタックに追加された場合でも、最後に追加されたフラグメントがポップされます。 この動作は正しいですか?この動作はバグですか?この問題の回避策はありますか? getChildFragmentManager()のサンプルコード: public class FragmentceptionActivity extends FragmentActivity { @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); final FrameLayout wrapper1 = new FrameLayout(this); wrapper1.setLayoutParams(new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); wrapper1.setId(1); final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); params.topMargin = 0; final TextView text = new TextView(this); text.setLayoutParams(params); text.setText("fragment …

16
入れ子になったフラグメントが遷移アニメーション中に消える
ここではシナリオがあります:活動は、フラグメントが含まAターン用途では、getChildFragmentManager()フラグメントを追加するA1と、A2その中にonCreateそのように: getChildFragmentManager() .beginTransaction() .replace(R.id.fragmentOneHolder, new FragmentA1()) .replace(R.id.fragmentTwoHolder, new FragmentA2()) .commit() これまでのところ、非常に良い、すべてが期待どおりに実行されています。 次に、アクティビティで次のトランザクションを実行します。 getSupportFragmentManager() .beginTransaction() .setCustomAnimations(anim1, anim2, anim1, anim2) .replace(R.id.fragmentHolder, new FragmentB()) .addToBackStack(null) .commit() 移行中、enterフラグメントのアニメーションBは正しく実行されますが、フラグメントA1とA2は完全に消えます。[戻る]ボタンでトランザクションを元に戻すと、それらは適切に初期化され、popEnterアニメーション中に正常に表示されます。 私の簡単なテストでは、奇妙になりました-子フラグメントのアニメーションを設定すると(以下を参照)、exitフラグメントを追加するとアニメーションが断続的に実行されますB getChildFragmentManager() .beginTransaction() .setCustomAnimations(enter, exit) .replace(R.id.fragmentOneHolder, new FragmentA1()) .replace(R.id.fragmentTwoHolder, new FragmentA2()) .commit() 達成したい効果は単純です- フラグメント(anim2)のアニメーションexit(またはそれである必要がありますpopExitか?A)を実行して、ネストされた子を含むコンテナー全体をアニメーション化します。 それを達成する方法はありますか? 編集:ここでテストケースを見つけてください Edit2:静的アニメーションを試してみてくれた@StevenByleに感謝します。どうやらアニメーションごとに(トランザクション全体にグローバルではなく)アニメーションを設定できます。つまり、子は無期限の静的アニメーションセットを持つことができ、親は異なるアニメーションを持つことができ、1つのトランザクションですべてをコミットできます。 。以下の説明と更新されたテストケースプロジェクトを参照してください。

13
FragmentPagerAdapterを使用したViewPagerのフラグメントは、2回目に表示されたときに空白になります
メインビューでさまざまなフラグメントを開く下部にタブがあるフラグメントインターフェイスがあります。 アイテムのリストである特定のフラグメントがあります。ユーザーがこのリストの項目の1つを選択すると、前のフラグメントのリストのすべての項目間を水平方向にスクロールするビューページャーを含む別のフラグメントが開きます。これはうまくいきます。 ビューページャーは、FragmentPagerAdapterを使用してアイテムを表示します。 問題は、ユーザーがリスト内のアイテムを選択して表示し、タブバーのボタンを押してリストに戻り、別のアイテムを選択したときに発生します。2回目にアイテムを選択すると、ビューページャーの代わりに空白の画面が表示されます。これが発生しても、LogCatにエラーは表示されません。 ビューページャーが初めてしか表示されないのはなぜですか? FragmentPagerAdapter: public class ViewPagerAdapter extends FragmentPagerAdapter { Cursor mCursor; public ViewPagerAdapter(FragmentManager fm, Cursor c) { super(fm); mCursor = c; } public void changeCursor(Cursor c) { mCursor = c; this.notifyDataSetChanged(); } @Override public int getCount() { if (mCursor == null) return 0; else return mCursor.getCount(); } …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.