Android - 使用片段时处理方向更改

时间:2012-01-30 20:35:16

标签: android user-interface orientation

我制作了两个布局文件 - 一个用于纵向,一个用于横向。这里是肖像:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="horizontal" >

   <fragment
       android:id="@+id/fragment_newslist"
       android:name="com.app.NewsListFragment"
       android:layout_width="0dp"
       android:layout_height="match_parent"
       android:layout_weight="1" >
   </fragment>

</LinearLayout>

这里是景观:             

   <fragment
       android:id="@+id/fragment_newslist"
       android:name="com.app.NewsListFragment"
       android:layout_width="0dp"
       android:layout_height="match_parent"
       android:layout_weight="1" >
   </fragment>

   <fragment 
       android:id="@+id/fragment_viewnews"
       android:name="com.app.ViewNewsFragment"
       android:layout_width="0dp"
       android:layout_height="match_parent"
       android:layout_weight="2" > 
   </fragment>

然后我创建了一个Activity,它在onCreate()方法中加载布局。到目前为止,这当然很好。此活动不包含更多代码。

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_news);
}

在NewsListFragment类中,我正在检查ViewNewsFragment是否可用。如果没有,用户点击了ListItem,将启动一个新的Activity(即ViewNewsActiviy)。如果可用,数据将显示在现有片段中。所以有两个类:1。ViewNewsActivity和2. ViewNewsFragment

但我真正想要的是改变方向变化的布局。当设备从纵向转为横向时,我想要具有典型的双窗格布局,如果它从横向转为纵向,我想单独显示列表,细节应该被视为单独的“视图”。

但是怎么做?到目前为止,当您以横向或纵向启动应用程序时,它可以正常工作。但是当您更改方向时,布局仍保持初始设置。

我非常感谢任何帮助:)! 非常感谢你!

1 个答案:

答案 0 :(得分:1)

  

但是怎么做?到目前为止,当您以横向或纵向启动应用程序时,它可以正常工作。但是当您更改方向时,布局仍保持初始设置。

Android会在方向更改时自动销毁并重新创建您的活动,因此每次调用onCreate()都会获得正确的布局。

如果您没有这样做,那么您可以采取措施阻止它,例如向清单中的android:configChanges添加<activity>属性。