質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

2853閲覧

AndroidViewPager

fefe

総合スコア46

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2015/01/20 04:21

現在FragmentTabHostの中にViewPagerを作っているのですが、タブを切り替えて戻ってくるとViewPagerの画面が表示されません。
空白の画面を何回かフリックすると数枚だけ表示されます。
実装方法はFragmentPagerAdapterを継承したMyAdapterに引数 getChildFragmentManager() をセットして、ViewPagerにsetAdapterしています。

コード内容は

lang

1//アダプター継承クラス 2public class TutorialPager extends FragmentPagerAdapter{ 3 public TutorialPager(FragmentManager fm) { 4 super(fm); 5 } 6 7 @Override 8 public Fragment getItem(int i) { 9 switch(i){ 10 case 0: 11 return new TutorialOne(); 12 case 1: 13 return new TutorialTwe(); 14 case 2: 15 return new TutorialThree(); 16 default: 17 return null; 18 } 19 } 20 21//ViewPager実装クラス 22public class MainViewPager extends FragmentActivity { 23 private TutorialPager vpa; 24 private ViewPager vp; 25 26 @Override 27 protected void onCreate(Bundle savedInstanceState) { 28 super.onCreate(savedInstanceState); 29 setContentView(R.layout.activity_main_view_pager); 30 vpa = new TutorialPager(getSupportFragmentManager()); 31 vp = (ViewPager) findViewById(R.id.pager); 32 vp.setAdapter(vpa); 33 } 34} 35 36

以上です。

解決方法よろしくお願いします・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こちらでタブを持ったActivityを別途用意して試してみたのですが、質問されているような現象が再現しませんでした。
質問の意図を取り違えているのでしょうか。

lang

1import android.support.v4.app.Fragment; 2import android.support.v4.app.FragmentManager; 3import android.support.v4.app.FragmentPagerAdapter; 4import android.support.v4.app.FragmentTabHost; 5import android.support.v4.view.ViewPager; 6import android.support.v7.app.ActionBarActivity; 7import android.os.Bundle; 8import android.view.*; 9import android.widget.TextView; 10 11public class SampleActivity extends ActionBarActivity { 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_sample); 17 18 final FragmentTabHost host = (FragmentTabHost)findViewById(android.R.id.tabhost); 19 host.setup(this, getSupportFragmentManager(), R.id.content); 20 21 host.addTab(host.newTabSpec("tab1").setIndicator("ViewPager"), ViewPagerFragment.class, null); 22 host.addTab(host.newTabSpec("tab2").setIndicator("sample"), Tab2Fragment.class, null); 23 24 25 } 26 27 /** 28 * ViewPagerを持つFragment 29 */ 30 public static class ViewPagerFragment extends Fragment { 31 private ViewPager vp; 32 private TutorialPagerAdapter vpa; 33 34 public ViewPagerFragment() {} 35 36 @Override 37 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 38 this.vp = new ViewPager(getActivity()); 39 vp.setId(R.id.sampleViewPager); 40 vpa = new TutorialPagerAdapter(getChildFragmentManager()); 41 vp.setAdapter(vpa); 42 43 return this.vp; 44 } 45 } 46 47 /** 48 * ViewPagerFragment用のFragmentPagerAdapter実装 49 */ 50 public static class TutorialPagerAdapter extends FragmentPagerAdapter { 51 public TutorialPagerAdapter(FragmentManager fm) { 52 super(fm); 53 } 54 55 @Override public Fragment getItem(int i) { 56 switch (i) { 57 case 0: return new TutorialOne(); 58 case 1: return new TutorialTwo(); 59 case 2: return new TutorialThree(); 60 default: return null; 61 } 62 } 63 64 @Override public int getCount() {return 3;} 65 } 66 67 68 /* --------------------------- 69 * サンプルFragment 70 */ 71 public abstract static class TutorialFragmentBase extends Fragment { 72 private final String name; 73 public TutorialFragmentBase(String name) { 74 this.name = name; 75 } 76 77 @Override 78 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 79 TextView view = new TextView(container.getContext()); 80 view.setText(this.name); 81 return view; 82 } 83 } 84 85 public static class TutorialOne extends TutorialFragmentBase {public TutorialOne() {super("TutorialOne");}} 86 public static class TutorialTwo extends TutorialFragmentBase {public TutorialTwo() {super("TutorialTwo");}} 87 public static class TutorialThree extends TutorialFragmentBase {public TutorialThree() {super("TutorialThree");}} 88 public static class Tab2Fragment extends TutorialFragmentBase {public Tab2Fragment() {super("タブ2");}} 89 90}

res/layout/activity_sample.xml は以下のとおり。

lang

1<?xml version="1.0" encoding="utf-8"?> 2<android.support.v4.app.FragmentTabHost 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:id="@android:id/tabhost" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent"> 7 8 <LinearLayout 9 android:orientation="vertical" 10 android:layout_width="match_parent" 11 android:layout_height="match_parent"> 12 13 <TabWidget 14 android:id="@android:id/tabs" 15 android:orientation="horizontal" 16 android:layout_width="match_parent" 17 android:layout_height="wrap_content" 18 android:layout_weight="0"/> 19 20 <FrameLayout 21 android:id="@android:id/tabcontent" 22 android:layout_width="0dp" 23 android:layout_height="0dp" 24 android:layout_weight="0"/> 25 26 <FrameLayout 27 android:id="@+id/content" 28 android:layout_width="match_parent" 29 android:layout_height="0dp" 30 android:layout_weight="1"/> 31 32 </LinearLayout> 33</android.support.v4.app.FragmentTabHost>

res/values/ids.xml は以下のとおり。

lang

1<?xml version="1.0" encoding="utf-8"?> 2<resources> 3 <item name="sampleViewPager" type="id" /> 4</resources>

投稿2015/01/22 05:07

tokoi

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YukiYoshida

2015/01/23 14:33

投稿者がint getCount()をオーバーライトしていないからでは?
tokoi

2015/01/24 08:02

getCount()をオーバライドしてなければ、コンパイルエラーになるはずです。一応実行できている様子なので、他の原因かと思いました。
fefe

2015/02/02 14:40

レス遅くなってしまい申し訳ありません。 上記のとおりに書くと解決しました! なぜあのバグが発生してしまっていたのかがわからないままですが。。。
guest

0

実装方法はFragmentPagerAdapterを継承したMyAdapterに引数 getChildFragmentManager() をセットして、ViewPagerにsetAdapterしています。

この部分のコードがあると回答しやすいです。追記可能ですか?

投稿2015/01/20 15:16

tokoi

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fefe

2015/01/22 02:22

了解しました! 追記します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問