teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

MainActivityのコードを全文載せました。

2016/09/07 07:08

投稿

Haru_T
Haru_T

スコア34

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,91 @@
1
1
  MainAcitivity内でRandom関数を使い、その結果をFragment上のTextViewで出力したいと思っています。
2
2
  コンパイル時にエラーがないのでそれぞれの構文自体に間違いはないと思うのですが、私のしたいこととは無縁の処理をしようとしているのか、実行したときにTextViewさえも現れてくれません。これでは、Activity上に新しいTextViewを作っていることになるかもしれません。Fragment上のTextViewであることを示すのには何が足りないのでしょうか。
3
3
 
4
+ 訂正し、MainActivityのコードをすべて載せました。Fragmentを3つ用意しスワイプさせるためAdapterも使用しています。
5
+
4
6
  ```java
7
+ package com.example.viewpagertest;
8
+
9
+ import android.net.Uri;
10
+ import android.support.v4.app.Fragment;
11
+ import android.support.v4.app.FragmentActivity;
12
+ import android.support.v4.app.FragmentManager;
13
+ import android.support.v4.app.FragmentStatePagerAdapter;
14
+ import android.support.v4.view.ViewPager;
15
+ import android.support.v7.app.AppCompatActivity;
16
+ import android.os.Bundle;
17
+ import android.util.Log;
18
+ import android.widget.TextView;
19
+
20
+ import java.util.Random;
21
+
22
+
5
23
  public class MainActivity extends FragmentActivity {
24
+ private InfinateSwipeViewPagerAdapter mPagerAdapter;
25
+ private ViewPager mViewPager;
6
26
 
7
- //中略
27
+ @Override
28
+ protected void onCreate(Bundle savedInstanceState) {
29
+ super.onCreate(savedInstanceState);
30
+ setContentView(R.layout.activity_main);
8
31
 
32
+ mPagerAdapter = new InfinateSwipeViewPagerAdapter(getSupportFragmentManager());
33
+ mViewPager = (ViewPager) findViewById(R.id.pager);
34
+ mViewPager.setAdapter(mPagerAdapter);
35
+ }
36
+
37
+ @Override
38
+ protected void onResume() {
39
+ super.onResume();
40
+ mViewPager.setCurrentItem(1);
41
+ }
42
+
43
+ class InfinateSwipeViewPagerAdapter extends FragmentStatePagerAdapter {
44
+ public static final int MAX_PAGE_NUM = 10;
45
+ private static final int OBJECT_NUM = 3;
46
+
47
+ public InfinateSwipeViewPagerAdapter(FragmentManager fm) {
48
+ super(fm);
49
+ }
50
+
51
+ @Override
52
+ public Fragment getItem(int position) {
53
+ Fragment fragment = null;
54
+ Log.d("position", "positionは「" + position + "」");
55
+ int diff = (position - (MAX_PAGE_NUM / 2)) % OBJECT_NUM;
56
+ int index = (0 > diff) ? (OBJECT_NUM + diff) : diff;
57
+ Log.d("index", "indexは「" + index + "」");
58
+ switch (index) {
59
+ case 0:
60
+ fragment = new TestFragment1();
61
+ break;
62
+ case 1:
63
+ fragment = new TestFragment2();
64
+ break;
65
+ case 2:
66
+ fragment = new TestFragment3();
67
+ break;
68
+ }
69
+ return fragment;
70
+ }
71
+ //以下がRandom関数を使っているところです。
9
- public class Ran {
72
+ public class Ran {
10
73
  public void main(String[] args) {
11
74
  Random r = new Random();
12
75
  int ran = r.nextInt(MAX_PAGE_NUM);
13
- //MAX_PAGE_NUMは作っているアプリの中で別のクラス内で指定してる変数、
14
- //ここではMAX_PAGE_NUM=10としている
15
76
  TextView text;
16
77
  text = (TextView) findViewById(R.id.text1);
17
- //text1はFragment上に用意しているTextViewのID
18
78
  text.setText(Integer.toString(ran));
19
79
  }
20
80
  }
21
81
 
82
+ @Override
83
+ public int getCount() {
84
+ return MAX_PAGE_NUM;
85
+ }
86
+ }
87
+ }
88
+
89
+
90
+
22
91
  ```