ここで非常に多くの質問を見てきましたが、何を探しているのか正確にはわかりません。
ViewPager を使用するシンプルなアプリがあります。3 つのタブがあり、各タブにフラグメントがあります。最初のフラグメントには、ListView が含まれています。ListView の要素をクリックして、別のフラグメントに移動できるようにしたいと考えています。
したがって、基本的には、要素がクリックされたら ListView を含むフラグメントを削除し、新しいフラグメントを追加したいと考えています。私はこれをいくつかの異なる方法で実行しようとしましたが、何も機能しませんでした。
最後に試したのは、要素がクリックされたら TabsPageAdapter を編集することでした。これは、戻るボタンを押してアプリを終了する場合を除いて、ほとんど機能します。また、これを行う最もクリーンな方法とは思えません。
TabsPagerAdapter
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
SherlockFragment mf;
TalkingPointsFragment tpf;
ContactFragment gf;
int mode = 0;
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
mf = new CanvassFragment();
tpf = new TalkingPointsFragment();
gf = new ContactFragment();
}
public TabsPagerAdapter(FragmentManager fm, int mode)
{
super(fm);
if(mode == 0)
{
mf = new CanvassFragment();
tpf = new TalkingPointsFragment();
gf = new ContactFragment();
}
else if(mode == 1)
{
mf = new ContactFragment();
tpf = new TalkingPointsFragment();
gf = new ContactFragment();
}
}
@Override
public SherlockFragment getItem(int index) {
switch (index) {
case 0:
return mf;
case 1:
return tpf;
case 2:
return gf;
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 3;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
}
}
onclick コード:
ViewPager viewp = (ViewPager) getActivity().findViewById(R.id.pager);
TabsPagerAdapter mAdapter = new TabsPagerAdapter(getActivity().getSupportFragmentManager(),1);
viewp.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
layout_main.xml
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:actionBarTabStyle="@drawable/actionbar_tab_indicator">