FragmentActivity と 3 つの Fragments で構成されるアプリケーションを開発しています。「次へ」ボタンを使用して、最初のフラグメントから 3 番目と最後のフラグメントに移動したいと考えています。そのために、viewPager と pagerAdpater を使用しています (viewpager のページング/スワイプを無効にしました)。私の「次へ」ボタンは、独自のフラグメントに実装されています。フラグメントごとに 1 つの xml レイアウトと、viewpager を含む fragmentActivity 用に 1 つの xml レイアウトがあります。
setCurrentItem(index) メソッドを使用して最初のビューから最後のビューに移動できる OnClickListener を使用しようとしています。
問題は、フラグメントにビューページャーの参照がないため、OnClickListener をどこに配置できるかわからないことです。
フラグメントでビューページャーの参照を取得するにはどうすればよいですか? OnClickListener メソッドを別の場所に配置する必要がありますか?
これが私の3つのフラグメントの1つのコードです:
public class InitializationStep1 extends Fragment{
private PagerAdapter mPagerAdapter;
CustomViewPager pager;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false);
Button button = (Button) v.findViewById(R.id.goToStep2);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
CustomViewPager pager = (CustomViewPager) v.findViewById(R.id.viewpager);
if(pager == null)
System.out.println("It's null..."); // always getting a null value
else
pager.setCurrentItem(0);
}
});
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}
}
これは私の FragmentActivity です:
public class Initialization extends FragmentActivity{
private PagerAdapter mPagerAdapter;
CustomViewPager pager;
Button b1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.viewpager_initialization_layout);
//initialize the pager
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, InitializationStep1.class.getName()));
fragments.add(Fragment.instantiate(this, InitializationStep2.class.getName()));
fragments.add(Fragment.instantiate(this, InitializationStep3.class.getName()));
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);
pager = (CustomViewPager)super.findViewById(R.id.viewpager);
pager.setPagingEnabled(false);
pager.setAdapter(this.mPagerAdapter);
pager.setCurrentItem(0);
}
}
これをすべてまとめると、次のようになります: -
3 つのフラグメント (1、2、および 3)
を実装し、取得したい:
- 次のフラグメントに移動するためのボタンを含む各フラグメント (1 -> 2 -> 3)。
- 「終了」ボタンを含む最後のフラグメント (ナビゲートする次のフラグメントがないため)
これは非常に単純なアクションだと思いますが、私は Android 開発に比較的慣れていないため、これを理解できませんでした。そのために間違ったコンポーネントを使用しようとしているのかもしれません。
ありがとう