私のアプリには 2 つfragments
の があり、1 つはリスト ビュー、もう 1 つは詳細ビューです。どちらも横向きモードで表示され、リストのみが縦向きで表示されます。onCreateOptionsMenu
構成の変更時に、両方にブレークポイントを設定するとfragments
、それらが 2 回ヒットし、メニュー項目Actionbar
が複製されます。
とinvalidateOptionsMenu
のようなさまざまなイベントで設定しようとしましたが、それは役に立たないようです。何が原因で2回ヒットするのかわかりません。onResume
onActivityCreated
onCreateOptionsMenu
ここに解決策があることに気付きましたが、それはうまくいきません。java.lang.IllegalArgumentException No view found for for fragment
にインonStart
を引き起こしActivity
ます。
アップデート
ポートレート モードの場合、を使用してViewPager
をロードしています。fragments
public class Main extends SherlockFragmentActivity
{
private static List<Fragment> fragments;
@Override
public void onCreate(final Bundle icicle)
{
setContentView(R.layout.main);
}
@Override
public void onResume()
{
mViewPager = (ViewPager)findViewById(R.id.viewpager);
if (mViewPager != null)
{
fragments = new ArrayList<Fragment>();
fragments.add(new MyListFragment());
fragments.add(MyDetailFragment.newInstance(0));
fragments.add(MyDetailFragment.newInstance(1));
fragments.add(MyDetailFragment.newInstance(2));
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mMyFragmentPagerAdapter);
}
}
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
return fragments.get(index);
}
@Override
public int getCount() {
return 4;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
}
それはランドスケープモードで、fragments
XML経由で追加しています。layout-land
これは、フォルダー内の main.xml ファイルです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:weightSum="3"
>
<fragment android:name="com.app.ListingFragment"
android:id="@+id/fragmentDetails"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="fill_parent"
/>
<fragment android:name="com.app.DetailFragment"
android:id="@+id/fragmentDetails"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="fill_parent"
/>
</LinearLayout>
これは、layout
フォルダー内の XML です。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_height="match_parent"
android:layout_width="match_parent"
/>
</RelativeLayout>