如何为具有可单击项列表的pageradapter重新设置功能

时间:2019-02-07 20:06:42

标签: java android fragmentpageradapter onbackpressed

场景:MainActivity(A)中有3个选项卡(forYou,topExplored,全部),每个选项卡都有可点击的图像,可将用户带到另一个Activity(B)。

我试图将父活动添加到清单文件中,但它只在左上角添加了后退按钮。 在网上冲浪时,我找到了addBackTrace的代码,但无法理解应该在哪里使用它。这是我的代码:

MainActivity.java

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    TabLayout tabLayout = (TabLayout)findViewById(R.id.mainTabs);
    ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager);

    tabPagerAdapter tabPagerAdapter = new tabPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(tabPagerAdapter);
    tabLayout.setupWithViewPager(viewPager);

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

tabPagerAdapter.java

String[] tabArray = new String[]{"For You", "Top Explored", "All"};

Integer tabCount = 3;

public tabPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    return tabArray[position];
}

@Override
public Fragment getItem(int position) {

    switch (position){

        case 0:
            ForYou forYou = new ForYou();
            return forYou;

        case 1:
            TopExplored topExplored = new TopExplored();
            return topExplored;

        case 2:
            All all = new All();
            return all;
    }
    return null;
}

@Override
public int getCount() {
    return tabCount;
}

All.java

public All() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_all, container, false);
}

实际:在活动B中单击“后退”按钮时,用户始终会登陆到“主要活动”的标签1。 预期:用户应导航到点击图片的标签。

0 个答案:

没有答案