我的主要 Activity 几乎是设置选项卡并在 ViewPager 中显示内容。我可以通过单击选项卡导航到另一个选项卡。
代码:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private SectionsPageAdapter pageAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter
mViewPager = (ViewPager) findViewById(R.id.container);
setupViewPager(mViewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager((mViewPager));
}
// Add fragments to SectionsPageAdapter and give titles
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new ProfileTab(), "Profile");
adapter.addFragment(new GithubTab(), "Github Repos");
adapter.addFragment(new FollowerTab(), "Followers");
adapter.addFragment(new FollowingTab(), "Followings");
viewPager.setAdapter(adapter);
}
}
但是,当我尝试通过单击其中一个页面中的 TextView 导航到另一个选项卡时,会出现错误。到目前为止我尝试过的是,
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.profile_tab, container, false);
... Code Hidden ...
// numRepos is the TextView that I have
numRepos.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(getActivity().getApplicationContext(), "num repos", Toast.LENGTH_SHORT).show();
viewPager.setCurrentItem(2);
}
});
return view;
我实际上知道这是行不通的,因为该页面中的 viewPager 与 MainActivity.java 中的 ViewPager 不同。如何通过单击 numRepos TextView 导航到另一个选项卡?
最佳答案
在您的 fragment 中尝试此操作:
ViewPager mviewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);
这个 id 将是您的 viewpager id,它在 Activity 布局中给出。
那就用这个吧。 mviewPager.setCurrentItem(2);
关于android - Android Studio 上如何在不点击选项卡的情况下移动到另一个选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886569/