我正在为平板电脑构建动态 UI,并排放置两个片段。
我知道使用 显示哪个布局getSupportFragmentManager().findFragmentById(R.id.my_fragment)
,其中 my_fragments 是显示在主列表片段旁边的第二个片段。但是经过一些旋转并单击 getSupportFragmentManager().findFragmentById() 后,即使它不应该返回片段(显示另一个布局,仅 listfragment)。
@Override
public void onRSSMessageSelected(int position) {
AppEngine.getInstance().setRSSMessagePosition(position);
// The user selected the RSSMessge from the RSSMessagesList
// Capture the detail fragment from the activity layout
RSSMessageDetail fragment = (RSSMessageDetail)
getSupportFragmentManager().findFragmentById(R.id.rssmessage_detail);
// BUG: supportManager doesn't return null even if it should
if (fragment!=null) {
fragment.updateRSSMessageDetail();
} else {
fragment = new RSSMessageDetail();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
}
布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
布局土地:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="cz.cvut.sabattom.fragment.RSSMessagesList"
android:id="@+id/feed_messages_list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="cz.cvut.sabattom.fragment.RSSMessageDetail"
android:id="@+id/rssmessage_detail"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>