0

Как мы можем преобразовать ниже XML progrmaticallyProgramatically создать список фрагмент и фрагмент

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <fragment 
     android:id="@+id/list_fragment" 
     android:name="com.aaa.bbb.activity.FragmentedListActivity$MyListFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

    <View 
     android:layout_width="1dp" 
     android:layout_height="match_parent" 
     android:background="#27577f" /> 

    <fragment 
     android:id="@+id/detail_fragment" 
     android:name="com.aaa.bbb.activity.FragmentedListActivity$MyDetailFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="2" /> 
</LinearLayout> 

+0

Convert to what? Чего вы пытаетесь достичь? – Egor

+1

Вы, вероятно, не хотите – ndh

+0

Егор читал название – ndh

ответ

1

это может вам помочь ...

private static final int ID_MY_FRAGMENT = 0xDEAF1; 
private static final int ID_MY_DETAIL_FRAGMENT = 0xDEAF2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    View contentView = getView(); 
    setContentView(contentView); 
    getSupportFragmentManager().beginTransaction() 
      .replace(ID_MY_FRAGMENT, new MyListFragment()) 
      .replace(ID_MY_DETAIL_FRAGMENT, new MyDetailFragment()).commit(); 
} 

private View getView() { 
    LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.HORIZONTAL); 

    FrameLayout frameLayout = new FrameLayout(this); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
      0, LinearLayout.LayoutParams.MATCH_PARENT, 1); 
    frameLayout.setLayoutParams(layoutParams); 
    frameLayout.setId(ID_MY_FRAGMENT); 
    layout.addView(frameLayout); 

    View view = new View(this); 
    layoutParams = new LinearLayout.LayoutParams((int) (1 * getResources() 
      .getDisplayMetrics().density), 
      LinearLayout.LayoutParams.MATCH_PARENT); 
    view.setLayoutParams(layoutParams); 
    view.setBackgroundColor(27555); 
    layout.addView(view); 

    frameLayout = new FrameLayout(this); 
    layoutParams = new LinearLayout.LayoutParams(0, 
      LinearLayout.LayoutParams.MATCH_PARENT, 2); 
    frameLayout.setLayoutParams(layoutParams); 
    frameLayout.setId(ID_MY_DETAIL_FRAGMENT); 
    layout.addView(frameLayout); 
    return layout; 
} 
+0

Это сервер моей цели, спасибо – Goofy

1

Вы можете изменить свои fragment тегов для FrameLayout из них, удалить имя атрибута в каждой метке, а затем добавить фрагменты программно:

MyListFragment fragment = new MyListFragment(); 
    MyDetailFragment fragment2 = new MyDetailFragment(); 
    fragmentTransaction.add(R.id.list_fragment, fragment); 
    fragmentTransaction.add(R.id.detail_fragment, fragment2); 
    fragmentTransaction.commit(); 
+0

спасибо, но этот R.id.list_fragment снова мы указываем на xml? – Goofy

+0

Да, это идентификатор представления, в который вы хотите поместить фрагмент. – k3v1n4ud3

+0

Но я не могу использовать любой xml или я могу ссылаться на любой идентификатор, все должно быть запрограммировано автоматически – Goofy

Смежные вопросы