

以下のコードはextends ActionBarActivityになっておりますが、これをextends
FragmentやActivityにする事は可能でしょうか？一番行いたいのはFragmentに書き換える事ですが、もしも不可能であればActivityであればどのように行えばよいか伺いたいです。

可能であればどのように行えばよいかご教示頂けますと幸いです。よろしくお願いいたします。

[code]

    public class PagerSlidingTabStrip extends ActionBarActivity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.view);
    
            getSupportActionBar().setHomeButtonEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
            ViewPager pager = (ViewPager) findViewById(R.id.pager);
            pager.setAdapter(new TestAdapter(getSupportFragmentManager()));
    
    
            PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
            tabs.setViewPager(pager);
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu){
            getMenuInflater().inflate(R.menu.menu, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
    
                case android.R.id.home:
                    finish();
                    break;
                case R.id.menu_home:
                    finish();
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
    
    
        private class TestAdapter extends FragmentPagerAdapter {
    
            private final String[] TITLES = {"A", "B","C"};
    
            public TestAdapter(FragmentManager fm) {
                super(fm);
            }
    
            @Override
            public android.support.v4.app.Fragment getItem(int position) {
                switch (position) {
                    case 0:
                        return new AFragment();
                    case 1:
                        return new BFragment();
                }
    
                return null;
            }
    
    
            @Override
            public int getCount() {
                return TITLES.length;
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                return TITLES[position];
            }
        }
    }
    
[/code]

追記  
通常Fragmnetで作った画面は特別な処理をしなくても、下記のような画像になります。  
![画像の説明をここに入力](https://i.stack.imgur.com/nUHH0.png)

しかし、たとえば上記したようなコードをそのまま遷移させますと表示はされますが、  
当然ActionbarActivityになってしまい、上記のような画像のActionbar??NavigationDrawerを開くものは表示されません。

![画像の説明をここに入力](https://i.stack.imgur.com/C1nk7.png)

先ほど、ご教示いただいたDrawerの処理の部分の事だとは思うのですが、他のFragmentですと、特に処理を加えておりませんでしたので、どのような処理を加えればよいのかいまいち分かっておりません。。。  
よろしければご教示いただけないでしょうか。


CC BY-SA 3.0
2015-03-23T09:19:14.667
8260
2015-03-25T05:51:14.880
2015-03-24T05:04:42.790
8765
8765
question
android
PagerSlidingTabStripをFragmentにしたい。


`Fragment`にも`Activity`にも出来ます。  
`ActionBar`を使う場合、`ActionBarActivity`のままにして、`PagerSlidingTabStrip`の部分を`Fragment`にすればいいと思います。  
`ActionBar`も含めて`Fragment`にしたい場合、`ActionBar`は`Fragment`には置けないため、`ToolBar`を利用すればいいと思います。  
ただ、`ToolBar`を利用する場合、`Activity`に`ToolBar`を配置し、その下に`Fragment`などを配置するのが一般的だと思います。  
なぜ`Fragment`にしたいかなどを教えてもらえれば、もうすこし具体的な回答が来ると思います。

追記  
コメントに対する回答です。

それであれば、`ActionBarActivity`のままでいいと思います（クラス名は変えたほうがいいと思いますが）。

こんな構成ではどうでしょう？  
* MainActivity  
`ActionBarActivity`を継承。`ActionBar`および`Drawer`の処理を行う。  
`Drawer`のメニュー選択により`Fragment`を切り替えする。  
* TabFragment  
`Fragment`を継承。`PagerSlidingTabStrip`を配置。

「FragmentでPagerSlidingTabStripの例」の件は特に`Fragment`だから特殊なことは必要なく、`Activity`で使っていた方法がそのまま使えると思います。


CC BY-SA 3.0
2015-03-23T10:10:29.763
8263
2015-03-23T12:02:35.317
2015-03-23T12:02:35.317
8216
8216
8260
answer


**追記ですが長いので新たに回答を作成します**

作成したい構成はこんな感じでしょうか？

![画像の説明をここに入力](https://i.stack.imgur.com/DTcHj.png)

上記画像のような構成でしたら、下記のようなコードになりますが、どのへんが分からない（それともこのような構成でなない？）のでしょうか？

## MainActivity.java

[code]

    public class MainActivity extends ActionBarActivity {
    
        private DrawerLayout mDrawerLayout;
        private ActionBarDrawerToggle mToggle;
        private ListView mMenuListView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
    
            mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    
            // DrawerToggleの設定
            mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name);
            mToggle.setDrawerIndicatorEnabled(true);
            mDrawerLayout.setDrawerListener(mToggle);
            mToggle.syncState();
    
            // DrawerのListViewに表示するメニュー
            String[] items = {"メニュー1", "メニュー2", "メニュー3"};
            ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
    
            // DrawerのListViewの設定
            mMenuListView = (ListView) findViewById(R.id.drawer_menu_listview);
            mMenuListView.setAdapter(adapter);
            mMenuListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                // DrawerのListViewの選択イベント
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    switch (position) {
                        case 0:
                            // 一番目の項目が選択された場合はFragmentAを表示
                            getSupportFragmentManager().beginTransaction().replace(R.id.container, FragmentA.newInstance()).commit();
                            break;
                        case 1:
                            // 二番目の項目が選択された場合はFragmentBを表示
                            getSupportFragmentManager().beginTransaction().replace(R.id.container, FragmentB.newInstance()).commit();
                            break;
                    }
                    mDrawerLayout.closeDrawer(mMenuListView);
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            return mToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
        }
    }
    
[/code]

## activity_main.xml

[code]

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        <ListView
            android:id="@+id/drawer_menu_listview"
            android:layout_width="200dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#eeddee"/>
    </android.support.v4.widget.DrawerLayout>
    
[/code]

## FragmentA.java

[code]

    public class FragmentA extends Fragment {
    
        public static FragmentA newInstance() {
            return new FragmentA();
        }
    
        public FragmentA() {
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_a, container, false);
    
            // ViewPagerにMyPagerAdapterを設定
            ViewPager pager = (ViewPager) view.findViewById(R.id.pager);
            pager.setAdapter(new MyPagerAdapter(getActivity()));
    
            // PagerSlidingTabStripにViewPagerを設定
            PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
            tabs.setViewPager(pager);
    
            return view;
        }
    
        private class MyPagerAdapter extends PagerAdapter {
    
            // ページ内容データ
            private String[] mContents = {"ページ1", "ページ2", "ページ3", "ページ4", "ページ5"};
            private Context mContext;
    
            public MyPagerAdapter(Context context) {
                mContext = context;
            }
    
            @Override
            public int getCount() {
                return mContents.length;
            }
    
            @Override
            public CharSequence getPageTitle(int position) {
                // とりあえず「タイトルn」を表示
                return "タイトル" + (position + 1);
            }
    
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                // とりあえずTextViewを表示
                TextView textView = new TextView(mContext);
                textView.setText(mContents[position]);
                container.addView(textView);
                return textView;
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                container.removeView((View) object);
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view.equals(object);
            }
        }
    }
    
[/code]

## fragment_a.xml

[code]

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <com.astuetz.PagerSlidingTabStrip
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="48dip"/>
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>
    
[/code]

## FragmentB.java

[code]

    public class FragmentB extends Fragment {
    
        public static FragmentB newInstance() {
            return new FragmentB();
        }
    
        public FragmentB() {
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            return inflater.inflate(R.layout.fragment_b, container, false);
        }
    }
    
[/code]

## fragment_b.xml

[code]

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="フラグメント2"/>
    </LinearLayout>
    
[/code]


CC BY-SA 3.0
2015-03-25T05:51:14.880
8364
2015-03-25T05:51:14.880
8216
8260
answer