使用ViewPager制作多个fragment(使用button换页)-1
1.首先我们先要新增fragement classc &fragment layout
2.MainActivity.class
package com.example.a2lab.fragment1;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG="MainActivity";
private SectionsStatePagerAdapter mSectionsStatePagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG,"onCreate: Started.");
mSectionsStatePagerAdapter=new SectionsStatePagerAdapter(getSupportFragmentManager());
mViewPager=(ViewPager) findViewById(R.id.containter);
setupViewPager(mViewPager);
}
private void setupViewPager(ViewPager viewPager){
SectionsStatePagerAdapter adapter = new SectionsStatePagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Fragement1(),"Fragment1");
adapter.addFragment(new Fragement2(),"Fragment2");
adapter.addFragment(new Fragement3(),"Fragment3");
viewPager.setAdapter(adapter);
}
public void setViewPager(int fragmentNumber){
mViewPager.setCurrentItem(fragmentNumber);
}
}
3.SectionStatePagerAdpter.class
package com.example.a2lab.fragment1;
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter; import java.util.ArrayList;
import java.util.List;
/** * Created by A2lab on 2017/10/30. */
public class SectionsStatePagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList= new ArrayList<>();
private final List<String> mFragmentTitleList= new ArrayList<>();
public SectionsStatePagerAdapter(FragmentManager fm){ super(fm);
}
public void addFragment(Fragment fragment,String title)
{
mFragmentList.add(fragment); mFragmentTitleList.add(title);
}
@Override public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override public int getCount() {
return mFragmentList.size();
}
}
4.Fragment1.class
package com.example.a2lab.fragment1;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
/** * Created by A2lab on 2017/10/30. */
public class Fragement1 extends Fragment {
private static final String TAG ="Fragment1";
private Button btnNavFrag1;
private Button btnNavFrag2;
private Button btnNavFrag3;
private Button btnNavSecondActivity;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment1_layout,container,false);
btnNavFrag1=(Button)view.findViewById(R.id.btnNavFrag1);
btnNavFrag2=(Button)view.findViewById(R.id.btnNavFrag2);
btnNavFrag3=(Button)view.findViewById(R.id.btnNavFrag3);
btnNavSecondActivity=(Button)view.findViewById(R.id.btnNavSecondActivity);
Log.d(TAG,"onCreatView: started.");
btnNavFrag1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment 1",Toast.LENGTH_SHORT).show();
((MainActivity)getActivity()).setViewPager(0);
}
});
btnNavFrag2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment 2",Toast.LENGTH_SHORT).show();
((MainActivity)getActivity()).setViewPager(1);
}
});
btnNavFrag3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment 3",Toast.LENGTH_SHORT).show();
((MainActivity)getActivity()).setViewPager(2);
}
});
btnNavSecondActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment btnNavSecondActivity",Toast.LENGTH_SHORT).show();
Intent intent=new Intent(getActivity(),SecondActivtiy.class); startActivity(intent);
}
});
return view;
}
}
4.Fragment1.class
package com.example.a2lab.fragment1;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log; import android.view.LayoutInflater;
import android.view.View; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Toast;
/** * Created by A2lab on 2017/10/30. */
public class Fragement1 extends Fragment {
private static final String TAG ="Fragment1";
private Button btnNavFrag1;
private Button btnNavFrag2;
private Button btnNavFrag3;
private Button btnNavSecondActivity;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment1_layout,container,false);
btnNavFrag1=(Button)view.findViewById(R.id.btnNavFrag1);
btnNavFrag2=(Button)view.findViewById(R.id.btnNavFrag2);
btnNavFrag3=(Button)view.findViewById(R.id.btnNavFrag3);
btnNavSecondActivity=(Button)view.findViewById(R.id.btnNavSecondActivity);
Log.d(TAG,"onCreatView: started.");
btnNavFrag1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment 1",Toast.LENGTH_SHORT).show();
((MainActivity)getActivity()).setViewPager(0);
}
});
btnNavFrag2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment 2",Toast.LENGTH_SHORT).show();
((MainActivity)getActivity()).setViewPager(1);
}
});
btnNavFrag3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment 3",Toast.LENGTH_SHORT).show();
((MainActivity)getActivity()).setViewPager(2);
}
});
btnNavSecondActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Going to Fragment btnNavSecondActivity",Toast.LENGTH_SHORT).show();
Intent intent=new Intent(getActivity(),SecondActivtiy.class);
startActivity(intent);
}
});
return view;
}
}
5.fragment2.class
package com.example.a2lab.fragment1; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; /** * Created by A2lab on 2017/10/30. */ public class Fragement2 extends Fragment { private static final String TAG ="Fragment1"; private Button btnNavFrag1; private Button btnNavFrag2; private Button btnNavFrag3; private Button btnNavSecondActivity; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view =inflater.inflate(R.layout.fragment2_layout,container,false); btnNavFrag1=(Button)view.findViewById(R.id.btnNavFrag1); btnNavFrag2=(Button)view.findViewById(R.id.btnNavFrag2); btnNavFrag3=(Button)view.findViewById(R.id.btnNavFrag3); btnNavSecondActivity=(Button)view.findViewById(R.id.btnNavSecondActivity); Log.d(TAG,"onCreatView: started."); btnNavFrag1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment 1",Toast.LENGTH_SHORT).show(); ((MainActivity)getActivity()).setViewPager(0); } }); btnNavFrag2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment 2",Toast.LENGTH_SHORT).show(); ((MainActivity)getActivity()).setViewPager(1); } }); btnNavFrag3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment 3",Toast.LENGTH_SHORT).show(); ((MainActivity)getActivity()).setViewPager(2); } }); btnNavSecondActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment btnNavSecondActivity",Toast.LENGTH_SHORT).show(); Intent intent=new Intent(getActivity(),SecondActivtiy.class); startActivity(intent); } }); return view; } }
6.fragment3.class
package com.example.a2lab.fragment1; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; /** * Created by A2lab on 2017/10/30. */ public class Fragement3 extends Fragment { private static final String TAG ="Fragment1"; private Button btnNavFrag1; private Button btnNavFrag2; private Button btnNavFrag3; private Button btnNavSecondActivity; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view =inflater.inflate(R.layout.fragment3_layout,container,false); btnNavFrag1=(Button)view.findViewById(R.id.btnNavFrag1); btnNavFrag2=(Button)view.findViewById(R.id.btnNavFrag2); btnNavFrag3=(Button)view.findViewById(R.id.btnNavFrag3); btnNavSecondActivity=(Button)view.findViewById(R.id.btnNavSecondActivity); Log.d(TAG,"onCreatView: started."); btnNavFrag1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment 1",Toast.LENGTH_SHORT).show(); ((MainActivity)getActivity()).setViewPager(0); } }); btnNavFrag2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment 2",Toast.LENGTH_SHORT).show(); ((MainActivity)getActivity()).setViewPager(1); } }); btnNavFrag3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment 3",Toast.LENGTH_SHORT).show(); ((MainActivity)getActivity()).setViewPager(2); } }); btnNavSecondActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(),"Going to Fragment btnNavSecondActivity",Toast.LENGTH_SHORT).show(); Intent intent=new Intent(getActivity(),SecondActivtiy.class); startActivity(intent); } }); return view; } }
7.SecondActivtiy.class
package com.example.a2lab.fragment1; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.util.Log; /** * Created by A2lab on 2017/10/30. */ public class SecondActivtiy extends AppCompatActivity{ private static final String TAG="SecondActivtiy"; @Override protected void onCreate(@Nullable Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.second_activity_layout); Log.d(TAG,"onCreate: Started."); } }
8. fragment1.layout (fragment2.3以此类推)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:text="Welecome to Fragement1" android:textSize="25dp" />
<Button
android:id="@+id/btnNavFrag1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textTitle"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="Go to Fragment1" />
<Button
android:id="@+id/btnNavFrag2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnNavFrag1"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="Go to Fragment2" />
<Button
android:id="@+id/btnNavFrag3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnNavFrag2"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="Go to Fragment3" />
<Button
android:id="@+id/btnNavSecondActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnNavFrag3"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:text="Go to Second Activity" />
</RelativeLayout>
9.Second_activity.layout
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:text="This is the SecondActivity Layout" android:layout_centerHorizontal="true" android:textSize="25dp" /> 10.activity_main
<android.support.v4.view.ViewPager
android:layout_width="368dp"
android:layout_height="495dp"
android:id="@+id/containter"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp">
</android.support.v4.view.ViewPager>
11.上图
12.结论:
viewerpager其实它是可以左右滑动换页的,在这个例子中把它变成用button 换页,
所以若是不想左右滑动换页可以换另外一种写法
请看下一篇
使用ViewPager制作多个fragment-2
查看原文 >>