Android PagerView between Activities
You can't use ViewPager
to swipe between Activities
. You need to convert each of you five Activities
into Fragments
, then combine everything in one FragmentActivity
with the Adapter
you use with ViewPager
.
Here's a link that goes into detail on converting your current Activities
info Fragments
.
This is the Fragment topic on the Android Developers website, it has a lot of useful info.
Here's another example (full source) that inflates TextViews
on each page.
Here's an example that I typed up:
PagerAdapter:
public class PagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<Fragment>();
public PagerAdapter(FragmentManager manager) {
super(manager);
}
public void addFragment(Fragment fragment) {
mFragments.add(fragment);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
}
This should be called in onCreate
of your FragmentActivity
:
private void initPaging() {
FragmentOne fragmentOne = new FragmentOne();
FragmentTwo fragmentTwo= new FragmentTwo();
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
pagerAdapter.addFragment(fragmentOne);
pagerAdapter.addFragment(fragmentTwo);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(pagerAdapter);
}
This is an example of the layout you'd use for your FragmnetActivity
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
To create Fragment
create a new class that extends Fragment
. The first two methods you'll want to override
are onActivityCreated
and onCreateView
.
Here's how you could do that:
public class FragmentOne extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(THE_LAYOUT_FROM_YOUR_ORIGINAL_ACTIVITY, container, false);
return view;
}
}
Using ViewPager to open different activities
Inside your PlaceHolderFragment
onCreateView()
callback, you just have to check what image id you have on your Fragments
argument. With that resource id, you can launch your Activity
according to that value:
jeans.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent activityIntent = new Intent();
Intent intent = new Intent();
switch(imagen){
case R.drawable.jeans:
intent = new Intent(getActivity(), JeansActivity.class);
break;
case R.drawable.blusas:
intent = new Intent(getActivity(), BlusasActivity.class);
break;
R.drawable.leggings:
intent = new Intent(getActivity(), LegginsActivity.class);
break;
}
startActivity(intent);
}
});
Start new activity from activity in viewpager?
Context https://developer.android.com/reference/android/content/Context.html. Here you can see why we use context.
Like this way you can call another activity.
public class CustomPagerAdapter extends Your_adapter_method {
private Context context;
public CustomPagerAdapter(Context context) {
this.context = context; //Main Activity Context
}
public View getView(...){
View v;
v.setOnClickListener(new OnClickListener() {
void onClick() {
Intent intent= new Intent(context, secondactivity.class);
intent.putextra("your_extra","your_class_value");
context.startActivity(intent); //Must use context to start activity.
}
});
}
}
Hope it helps.!
android - Pass data from Activity to Fragment in ViewPager
Okay, I did this.
1 step: I created public interface in my Activity and setter for it:
private OnAboutDataReceivedListener mAboutDataListener;
public interface OnAboutDataReceivedListener {
void onDataReceived(AboutCompanyViewModel model);
}
public void setAboutDataListener(OnAboutDataReceivedListener listener) {
this.mAboutDataListener = listener;
}
2 step: I implemented this interface in my Fragment and set listener:
public class AboutCompanyFragment extends BaseFragment implements ManagementCompanyOverviewActivity.OnAboutDataReceivedListener
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = (ManagementCompanyOverviewActivity) getActivity();
mActivity.setAboutDataListener(this);
}
3 step: I overrided interface's method:
@Override
public void onDataReceived(AboutCompanyViewModel model) {
mPBName.setVisibility(View.INVISIBLE);
mPBDirector.setVisibility(View.INVISIBLE);
mPBWebsite.setVisibility(View.INVISIBLE);
mPBEmail.setVisibility(View.INVISIBLE);
mPBPhone.setVisibility(View.INVISIBLE);
mPBSchedule.setVisibility(View.INVISIBLE);
mPBAddress.setVisibility(View.INVISIBLE);
mTVName.setVisibility(View.VISIBLE);
mTVDirector.setVisibility(View.VISIBLE);
mTVWebsite.setVisibility(View.VISIBLE);
mTVEmail.setVisibility(View.VISIBLE);
mTVPhone.setVisibility(View.VISIBLE);
mTVSchedule.setVisibility(View.VISIBLE);
mTVAddress.setVisibility(View.VISIBLE);
mTVName.setText(model.getCompanyName());
mTVDirector.setText(model.getDirectorName());
mTVWebsite.setText(model.getWebsite());
mTVEmail.setText(model.getEmail());
mTVPhone.setText(model.getPhone());
mTVSchedule.setText(model.getWorkTime());
mTVAddress.setText(model.getAddress());
}
That's it.
Related Topics
Android: How to Change the Actionbar "Home" Icon to Be Something Other Than the App Icon
How to Replace Deprecated Android.Support.V4.App.Actionbardrawertoggle
Save Sensitive Data in React Native
How to Change the Android Startactivity() Transition Animation
How to Declare Git Repository as Dependency in Android Gradle
Change the Right Margin of a View Programmatically
Android Retrofit - Onprogressupdate for Showing Progress Notification
Cannot Lower Case Button Text in Android Studio
Filter Output in Logcat by Tagname
Login Error: There Is an Error in Logging You into This Application. Please Try Again Later
Eclipse Ddms Error "Can't Bind to Local 8600 for Debugger"
Android Finish() Method Doesn't Clear App from Memory
Libgdx Spritebatch Render to Texture
Android- How to Convert Android.Net.Uri Object to Java.Net.Uri Object