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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

Q&A

解決済

1回答

1630閲覧

子Fragmentにページ番号を表示させたい

Haru_T

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Android Studio

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

0グッド

0クリップ

投稿2016/09/09 09:18

この間、MainActivityで取得した変数positionを子Fragmentで使いたい、といった内容の質問をさせていただいたのですが、参考にさせて頂きたい意見を頂いたものの、知識不足で生かせませんでした。そこで、MainActivity内でOnPageChangeListenerを使用してページ番号を取得し、子Fragmentに表示できないかと考えました。スクロール中のタイミングで取得し、表示させようと思っているのですが、やはり子Fragmentに表示させる段階でつまづいているのか、実行できてもページ番号の表示ができません。‟text=”以降のところが違うと思う気はしているのですが、子Fragmentに用意したTextView(Id:text1)に表示させるのに足りないものは何でしょうか。知識不足で中途半端な質問になってしまいすみません。MainActivityのコードを全文載せています。

java

1package com.example.viewpagertest; 2 3import android.net.Uri; 4import android.support.v4.app.Fragment; 5import android.support.v4.app.FragmentActivity; 6import android.support.v4.app.FragmentManager; 7import android.support.v4.app.FragmentStatePagerAdapter; 8import android.support.v4.view.ViewPager; 9import android.support.v7.app.AppCompatActivity; 10import android.os.Bundle; 11import android.util.Log; 12import android.widget.TextView; 13 14import java.util.Random; 15 16 17public class MainActivity extends FragmentActivity { 18 private InfinateSwipeViewPagerAdapter mPagerAdapter; 19 private ViewPager mViewPager; 20 private ViewPager.OnPageChangeListener mOnPageChangeListener; 21 TextView text; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 28 mPagerAdapter = new InfinateSwipeViewPagerAdapter(getSupportFragmentManager()); 29 mViewPager = (ViewPager) findViewById(R.id.pager); 30 mViewPager.setAdapter(mPagerAdapter); 31 mViewPager.setOnPageChangeListener(mOnPageChangeListener); 32 } 33 34 @Override 35 protected void onResume() { 36 super.onResume(); 37 mViewPager.setCurrentItem(1); 38 } 39 40 class InfinateSwipeViewPagerAdapter extends FragmentStatePagerAdapter { 41 public static final int MAX_PAGE_NUM = 10; 42 private static final int OBJECT_NUM = 3; 43 44 public InfinateSwipeViewPagerAdapter(FragmentManager fm) { 45 super(fm); 46 } 47 48 @Override 49 public Fragment getItem(int position) { 50 Fragment fragment = null; 51 Log.d("position", "positionは「" + position + "」"); 52 int diff = (position - (MAX_PAGE_NUM / 2)) % OBJECT_NUM; 53 int index = (0 > diff) ? (OBJECT_NUM + diff) : diff; 54 switch (index) { 55 case 0: 56 fragment = new TestFragment1(); 57 break; 58 case 1: 59 fragment = new TestFragment2(); 60 break; 61 case 2: 62 fragment = new TestFragment3(); 63 break; 64 } 65 return fragment; 66 } 67 68 @Override 69 public int getCount() { 70 return MAX_PAGE_NUM; 71 } 72 } 73 74 class OnPageChangeListener{ 75 public void onPageScrollStateChanged(int state) { 76 if(state == ViewPager.SCROLL_STATE_DRAGGING){ 77 int page = mViewPager.getCurrentItem(); 78 text = (TextView)findViewById(R.id.text1); /*この行が実行されてない*/ 79 } 80 } 81 } 82}

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

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

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

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

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

yona

2016/09/09 10:56

getItemの冒頭で行っている処理はなんですか?
Haru_T

2016/09/09 11:28

getItemでpositionを取得し、その値で計算したその結果によってFragmentのスワイプを行っています。 という感じで大丈夫でしょうか(・・;)
yona

2016/09/09 12:10

positionの値は0,1,2じゃないですか?
Haru_T

2016/09/09 12:22

Fragmentを3つ用意していて、0、1、2、0、1、2、0、…とスワイプできるようにしているのですが、2までいって、また次にスワイプして(4ページ目にスワイプして)0に戻る時もpositionは0に戻りますか?その際positionは3になるものだと思っていたのですが…
yona

2016/09/09 12:27

なるほど、無限ループするなら必要ですね。ただ、それも質問に書くべきですね。 で、子フラグメントで表示するのは下記の場合はどのように表示したいですか? フラグメント0、1、2、0、1、2、0
Haru_T

2016/09/09 12:41

言葉が足らずすみません。Fragmentでめくるページは0、1、2、0、1、2、ですが、スワイプするため1、2、3、4(0)、5(1)、とページ数を加算させて表記をしたいのです。私の作るアプリに合わせて0、1、2のFragmentの上にさらにFragmentを用意しているのですが、(そちらが子Fragment)そこに用意するTextviewに表記したいです。その処理にOnChangeListenerを使おうとしています。言葉が不十分な気もしますが分かりますでしょうか。
guest

回答1

0

ベストアンサー

positonは0〜9が表示されますよね?
それをそのままFragmentに渡してあげたらいいと思います。

表示するのはActivityですか?それとも子Fragmentですか?

投稿2016/09/09 13:12

yona

総合スコア18155

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

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

Haru_T

2016/09/09 13:58

表示するのは子Fragment上に親Fragmentのページ数を、です。(という意味ですよね?) そのままFragmentに渡す時はBundleクラスを使ったのでいいんですよね。試してみます。 以下のサイトを見つけたのですが、こちらの場合、渡す変数に具体的な数字を入れています。それができない場合には、bundle.putInt("position");で大丈夫でしょうか。何度もすみません。 http://android-note.open-memo.net/sub/fragment__pass_data.html
yona

2016/09/09 14:21

とりあえずActivtyとFragmentの関係がわかりません。親フラグメントや子フラグメントではわからないです。 下記のパターンのどれですか? ・パターン1:ActivityにTestFragment1を配置する。TestFragment1にページ数を表示するフラグメントを配置する。 ・パターン2:ActiviyにTestFragment1とページ数を表示するフラグメントを両方配置する。 ・パターン3:Activityにページ数を表示し、TestFragment1を配置する。 ・パターン4:ActivityにTestFragment1を配置し、TestFragment1にページ数を表示する。 あと、positionは0〜9ですよね?これは合っていますか?
Haru_T

2016/09/13 02:13

お返事が遅くなり大変申し訳ないです。 パターン1です!!でもパターン4の場合も知っておきたいです。 positionの件返事していませんでした、すみません。 0~9で合っています。
yona

2016/09/13 04:09

では、bundle.putInt("pageNum",position+1)でActivityからFragmentにページ情報を渡しましょう。 そのあと、Fragment内でBundleを取り出しページ数を取得しましょう。 これでパターン1、パターン4の好きな方を実装できます。
Haru_T

2016/09/14 04:07

ありがとうございます!! これでまた先へ進めそうです(^^)
yona

2016/09/14 06:15

詰まったらまた質問してください。 その時は無理に文章にぜず、箇条書きなどを使って分かりやすいと回答しやすいです。
Haru_T

2016/09/14 07:20

以後注意します。いつもありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問