Как я могу перейти от списка действий к вкладке фрагмент деятельности - PullRequest
0 голосов
/ 01 сентября 2018

Я новичок в программировании Android и мне нужна ваша помощь. Пожалуйста. Что я хочу сделать.

Я создал список просмотра, из списка я создал OnItemClickListener для TabbedActivity.

Теперь я хочу, чтобы каждый элемент списка отображал различные фрагменты в TabbedActivity.

Это список просмотра активности

public class BookListActivity extends AppCompatActivity {

    android.support.v7.widget.Toolbar toolbar;
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_song_list);

        toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
        toolbar.setTitle("Best Selling Books by Author");
        listView = (ListView) findViewById(R.id.listView);

        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(SongListActivity.this,
                android.R.layout.simple_list_item_1,
                getResources().getStringArray(R.array.bookList));

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

Intent intent = new Intent(ListViewActivity.this, TabbedActivity.class);
intent.putExtra("BookList", listView.getItemAtPosition(i).toString());
startActivity(intent);
            }
        });


        listView.setAdapter(mAdapter);
    }
}

Вот моя активность с вкладками

public class TabbedActivity extends AppCompatActivity {

    private static final String TAG = "HymnActivity";

    private SectionsPageAdapter mSectionsPageAdapter;

    private ViewPager mViewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hymn);
        Log.d(TAG, "onCreate: Starting");

        mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.container);
        setupViewPager(mViewPager);

//        Bundle bundle = getIntent().getExtras();
//        if(bundle != null) {
////           HOW SHOULD I IMPLEMENT THIS
//        }

    }

    private void setupViewPager(ViewPager viewPager) {
        SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
        adapter.addFragment(new Book1(), "Book1");
        adapter.addFragment(new Book2(), "Book2");
        adapter.addFragment(new Book3(), "Book3");
        adapter.addFragment(new Book4(), "Book4");
        adapter.addFragment(new Book5(), "Book5");
        adapter.addFragment(new Book6(), "Book6");
        adapter.addFragment(new Book7(), "Book7");
        adapter.addFragment(new Book8(), "Book8");
        adapter.addFragment(new Book9(), "Book9");
        adapter.addFragment(new Book10(), "Book10");

        viewPager.setAdapter(adapter);
    }


}

Вот мои разделыPagerAdapter

public class SectionsPageAdapter extends FragmentPagerAdapter {

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();


    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }


    public SectionsPageAdapter(FragmentManager fm) {

        super(fm);
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }
}

Это один из моих фрагментов

public class Book274 extends Fragment {
    private static final String TAG = "Book274";

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
            @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.book274, container, false);

        return view;
    }
}

Пока что фрагмент с вкладками работает очень хорошо, когда я пролистываю их. Но я не могу перейти к конкретному слайду. Это всегда будет начинаться с самого начала, и у меня есть более 200 вкладок

Вот почему я хочу реализовать вкладку listView. Так что из listView я могу посетить конкретную вкладку / фрагмент по своему выбору и все равно скользить оттуда вперед или назад.

Спасибо Papi.

1 Ответ

0 голосов
/ 01 сентября 2018

Передайте номер вкладки, которую вы хотите открыть в намерении.

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

        Intent intent = new Intent(ListViewActivity.this, TabbedActivity.class);
        intent.putExtra("tabNum", i); //which tab number you want to open
        startActivity(intent);
        }
    });

Теперь извлеките данные о намерениях в TabbedActivity (действие, в котором вы размещаете фрагменты), примерно так:

String tabNum = intent.getExtras().getString("tabNum");

И установите viewPager на это число:

viewPager.setCurrentItem(tabNum);
...