我有一个活动,我想根据方向动态添加我的片段,所以我做了如下: 的 Calendrier.java
package com.thinline.dm21.calendrier;
public class Calendrier extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calendrier_main);
//ajouter les fragments Planifications et Calendrier mensuel
ajouterFragments();
}
public void ajouterFragments(){
FragmentTransaction ft = getFragmentManager().beginTransaction();
if(getResources().getConfiguration().orientation == 1){
}
else if(getResources().getConfiguration().orientation == 2){
ft.add(R.id.calendrier_planifictions, new Planifications());
ft.add(R.id.calendrier_calendrierhebdomadaire, new CalendrierHebdomadaire());
}
ft.commit();
}
}
这是我的 layout / calendrier_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/calendrier_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<LinearLayout
android:id="@+id/calendrier_planifictions"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
</LinearLayout>
<RelativeLayout
android:id="@+id/calendrier_calendrierhebdomadaire"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" >
</RelativeLayout>
</LinearLayout>
和我的 layout-port / calendrier.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/calendrier_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<LinearLayout
android:id="@+id/calendrier_planifictions"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
</LinearLayout>
<RelativeLayout
android:id="@+id/calendrier_calendrierhebdomadaire"
android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="2" >
</RelativeLayout>
</LinearLayout>
我的问题是:
答案 0 :(得分:0)
Android会在您旋转时将片段添加到您的活动中。如果已添加片段并在活动创建中删除它们,则需要标记。
答案 1 :(得分:0)
Android会在轮换更改后保留片段,因此在纵向模式下,您需要检查是否添加了片段,如果是,则需要删除它们。您的代码应类似于以下示例:
private static final String PLANIFICATIONS_FRAG_TAG = "PLANIFICATIONS_FRAG_TAG";
private static final String CALENDAR_FRAG_TAG = "CALENDAR_FRAG_TAG";
public void ajouterFragments(){
Configuration configuration = getResources().getConfiguration();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
Planifications planificationsFrag = fragmentManager.findFragmentByTag(PLANIFICATIONS_FRAG_TAG);
CalendrierHebdomadaire calendarFrag = fragmentManager.findFragmentByTag(CALENDAR_FRAG_TAG);
if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
if (planificationsFrag != null)
ft.remove(fragment);
if (calendarFrag != null)
ft.remove(calendarFrag);
}
else if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
if (planificationsFrag == null)
ft.add(R.id.calendrier_planifictions, new Planifications(), PLANIFICATIONS_FRAG_TAG);
if (calendarFrag == null)
ft.add(R.id.calendrier_calendrierhebdomadaire, new CalendrierHebdomadaire(), CALENDAR_FRAG_TAG);
}
ft.commit();
}