Я хочу изменить фрагмент, когда я нажимаю кнопку. Фрагменты находятся в одном и том же адаптере/viewpager.android onClick change фрагмент
Из этого фрагмента:
public class LoginFragment extends Fragment {
TextView linkToRegister;
public static final LoginFragment newInstance()
{
LoginFragment mf = new LoginFragment();
Bundle bd = new Bundle(1);
mf.setArguments(bd);
return mf;
}
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.fragment_login, container, false);
linkToRegister = (TextView) v.findViewById(R.id.link_to_register);
linkToRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Change Fragment
}
});
return v;
}
}
К этому фрагменту:
public class RegisterFragment extends Fragment {
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
public static final RegisterFragment newInstance()
{
RegisterFragment mf = new RegisterFragment();
Bundle bd = new Bundle(1);
mf.setArguments(bd);
return mf;
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.fragment_register, container, false);
return v;
}
}
PagerAdapter:
public class WelcomePagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> Welcomefragments;
public WelcomePagerAdapter(FragmentManager fm, List<Fragment> Welcomefragments) {
super(fm);
this.Welcomefragments = Welcomefragments;
}
@Override
public Fragment getItem(int position) {
return this.Welcomefragments.get(position);
}
@Override
public int getCount() {
return this.Welcomefragments.size();
}
}
активность:
public class WelcomeActivity extends AppCompatActivity {
ViewPager welcomeViewPager;
WelcomePagerAdapter welcomePagerAdapter;
List<Fragment> welcomeFragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
welcomeViewPager = (ViewPager) findViewById(R.id.viewPagerWelcome);
welcomeFragments = getWelcomeFragments();
welcomePagerAdapter = new WelcomePagerAdapter(getSupportFragmentManager(), welcomeFragments);
welcomeViewPager.setAdapter(welcomePagerAdapter);
}
public List<Fragment> getWelcomeFragments() {
List<Fragment> newFragment = new ArrayList<Fragment>();
newFragment.add(LoginFragment.newInstance());
newFragment.add(RegisterFragment.newInstance());
return newFragment;
}
}
Вы необходимо использовать обратный вызов Activity из фрагмента, чтобы изменить страницу адаптера. Пожалуйста, ознакомьтесь с этим руководством о том, как это сделать. https://developer.android.com/training/basics/fragments/communicating.html –
Привет, спасибо за ваш ответ. все еще не понимаю, как это сделать, можете ли вы объяснить мне это? –
Фрагмент определяет интерфейс, затем Activity реализует этот интерфейс и соответствующие методы, Фрагмент привязан к этому Activity/interface и может вызывать его методы. –