Swiping to the next Fragment with a button click
android, android-fragments, android-viewpager, java, user-interface
Solution
Just add a new method that moves fragments to your activity:
public void setCurrentItem (int item, boolean smoothScroll) {
viewPager.setCurrentItem(item, smoothScroll);
}
and call it from a button listener:
((MainActivity)getActivity()).setCurrentItem (1, true);
Problem
Here is my code: FirstView.java ``` import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class FirstView extends Fragment { private TextView firstText; private Button btn; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_view1,container,false); firstText = (TextView)view.findViewById(R.id.viewOneText); btn = (Button)view.findViewById(R.id.viewOneBtn); btn.setOnClickListener(new ButtonEvent()); return view; } private class ButtonEvent implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub new SecondView(); } } } ``` SecondView.java ``` import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class SecondView extends Fragment { private TextView secondText; private Button secondViewBtn; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_view2,container,false); secondText = (TextView)view.findViewById(R.id.secondViewText); secondViewBtn = (Button)view.findViewById(R.id.secondViewBtn); secondViewBtn.setOnClickListener(new ButtonEvent()); return view; } private class ButtonEvent implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub secondText.setText("Second View Text changed"); } } } ``` MainActivity.java ``` import android.os.Bundle; import android.app.Activity; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.Menu; public class MainActivity extends FragmentActivity { private ViewPager viewPager; private MyAdapter pageAdapter; private static final int ITEMS = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager)findViewById(R.id.pager); pageAdapter = new MyAdapter(getSupportFragmentManager()); viewPager.setAdapter(pageAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public static class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() { return ITEMS; } @Override public Fragment getItem(int position) { if(position==0) { return new FirstView(); } else { return new SecondView(); } } } } ``` In this code, when I click on the `Button` in FirstView, I need to move to the SecondView. I tried with `Intents` but guess it is wrong. Currently this is having the Swipe function because of the `ViewPager`, I need to this to move to the SecondView when the button is clicked, with the same swipe functionality.