3

私はこの仕事を得るために一生懸命努力しています。タブとビューページャーを備えたアクションバーが必要です。タブには、画面の向きに応じて、1 つまたは 2 つのフラグメントがあります。

1 つまたは 2 つのフラグメントは (Sherlock)ListFragments でなければなりません。

これはこれまでのところ機能します。しかし、フラグメントにはコンテンツがありません。最初のフラグメントの onCreate または onCreateView も呼び出されません。

主なアクティビティは次のとおりです。

public class tabActivity extends SherlockFragmentActivity
{
    private ViewPager mViewPager;
    private TabsAdapter mTabsAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        setTheme(R.style.Theme_Sherlock);
        super.onCreate(savedInstanceState);

        mViewPager = new ViewPager(this);
        //mViewPager.setId(R.id.pager);

        setContentView(R.layout.main);

        ActionBar bar = getSupportActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

        mTabsAdapter = new TabsAdapter(this, mViewPager);
        mTabsAdapter.addTab(bar.newTab().setText("Advanced"),TitlesFragment.class, null);
    }

必須の TabsAdapter が続きます。ABSで動くようにしました。タイトルフラグメント:

public static class TitlesFragment extends SherlockListFragment 
{
    boolean mDualPane;
    int mCurCheckPosition = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {

        View detailsFrame = getActivity().findViewById(R.id.details);
        mDualPane = detailsFrame != null && detailsFrame.getVisibility() == View.VISIBLE;

        if (savedInstanceState != null) {

            mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
        }

        if (mDualPane) {

            getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);

            DetailsFragment details = (DetailsFragment)getFragmentManager().findFragmentById(R.id.details);

            if (details == null)
            {
                details = DetailsFragment.newInstance();
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.replace(R.id.details, details);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.commit();
            }
        }
    }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View mView = inflater.inflate(R.layout.list_entervalues, container, false);
        Activity mFracmentActivity = super.getSherlockActivity();
        setListAdapter(new SpecListAdapter(mFracmentActivity, Shakespeare.TITLES));

        return mView;
    }
}

SpecListAdapter を使用するか、setListAdapter(new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES)); を呼び出すかは問題ではありません。TitlesFragment の onCreate() メソッドで。

main.xml (解像度/レイアウト):

    <?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="vertical" >
    <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
</LinearLayout>

main.xml (res/layout-land):

    <?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" >
    <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" />

    <FrameLayout android:id="@+id/details" android:layout_weight="1"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:background="?android:attr/detailsElementBackground" />
</LinearLayout>
4

0 に答える 0