我正在将ViewPager和setupWithViewPager用于实验室布局,
但是我只希望将整个列表中的一半片段显示在选项卡上,但是稍后需要访问该片段,因为我想在导航抽屉中使用它。
据我所知,setupWithViewPager将在呈现选项卡之前调用getCount和getPageTitle
这是代码
package a;
import android.annotation.SuppressLint;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import a.fragment.ForgotPasswordFragment;
import a.fragment.LoginFragment;
import a.fragment.RegisterFragment;
import java.util.ArrayList;
import java.util.List;
public class Public extends AppCompatActivity {
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_public);
// Adding Toolbar to Main screen
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Setting ViewPager for each Tabs
mViewPager = (ViewPager) findViewById(R.id.viewpager);
PublicAdapter adapter = new PublicAdapter(getSupportFragmentManager());
adapter.addFragment("Login");
adapter.addFragment("Register");
adapter.addFragment("Forgot Password");
mViewPager.setAdapter(adapter);
// Set Tabs inside Toolbar
TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
tabs.setupWithViewPager(mViewPager);
// Adding menu icon to Toolbar
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
supportActionBar.setCustomView(R.layout.app_name);
setTitle(R.string.app_name);
}
}
@SuppressLint("MissingSuperCall")
@Override
public void onBackPressed()
{
// code here to show dialog
//super.onBackPressed(); // optional depending on your needs
}
public ViewPager getViewPager() {
if (null == mViewPager) {
mViewPager = (ViewPager) findViewById(R.id.viewpager);
}
return mViewPager;
}
static class PublicAdapter extends FragmentStatePagerAdapter {
private final List<String> mFragmentList = new ArrayList<>();
public PublicAdapter(FragmentManager manager) {
super(manager);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch(position) {
case 0:
fragment = new LoginFragment();
break;
case 1:
fragment = new RegisterFragment();
break;
case 2:
fragment = new ForgotPasswordFragment();
break;
}
return fragment;
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentList.get(position);
}
public void addFragment(String fragmentName) {
mFragmentList.add(fragmentName);
}
public int getFragmentId(String fragmentName) {
return mFragmentList.indexOf(fragmentName);
}
}
}