因为使用官方提供的TabActivity模板搞了很久,都无法完成在Frament里面绑定广播和注册一个服务。于是就使用了这个可以有同样效果的单Activity和多Fagment滑动效果。
- MainActivity.java
- MainViewPager.java
- oneFragment.java
- twoFragment.java
- ……java
MainActivity.java
public class MainActivity extends FragmentActivity {
public MainViewPager viewPager;
public List<Fragment> fragments = new ArrayList<Fragment>();
private FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragments.add(new oneFragment());
fragments.add(new twoFragment());
fragments.add(new threeFragment());
fragments.add(new fourFragment());
fragmentManager = this.getSupportFragmentManager();
viewPager = (MainViewPager) findViewById(R.id.viewPager);
//viewPager.setSlipping(false);//设置ViewPager是否可以滑动
viewPager.setOffscreenPageLimit(4);
viewPager.setAdapter(new MyPagerAdapter());
}
private class MyPagerAdapter extends PagerAdapter {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(fragments.get(position)
.getView());
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = fragments.get(position);
if (!fragment.isAdded()) { // 如果fragment还没有added
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.add(fragment, fragment.getClass().getSimpleName());
ft.commit();
/**
* 在用FragmentTransaction.commit()方法提交FragmentTransaction对象后
* 会在进程的主线程中,用异步的方式来执行。
* 如果想要立即执行这个等待中的操作,就要调用这个方法(只能在主线程中调用)。
* 要注意的是,所有的回调和相关的行为都会在这个调用中被执行完成,因此要仔细确认这个方法的调用位置。
*/
fragmentManager.executePendingTransactions();
}
if (fragment.getView().getParent() == null) {
container.addView(fragment.getView()); // 为viewpager增加布局
}
return fragment.getView();
}
};
}
MainViewPager.java
/**
* Created by yuanlifu on 2017/4/23.
*/
public class MainViewPager extends ViewPager{
private boolean isSlipping = true;//可滑动标志位
public MainViewPager(Context context) {
super(context);
}
public MainViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (!isSlipping) {
return false;
}
return super.onInterceptTouchEvent(arg0);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
if (!isSlipping) {
return false;
}
return super.onTouchEvent(arg0);
}
/**
*@Title: setSlipping
*@Description: TODO设置ViewPager是否可滑动
*@param isSlipping
*/
public void setSlipping(boolean isSlipping) {
this.isSlipping = isSlipping;
}
}
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainweixin"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#eee"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="vertical" >
<com.example.wo.mycradle.MainViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
</LinearLayout>
</RelativeLayout>
oneFragment.java
public class oneFragment extends Fragment {
private static final String TAG = "liefyuan";
private TextView aVuale_babyTemp;
private TextView aVuale_babyWeight;
private TextView aVuale_babyEnvirTemp;
private TextView aVuale_babyEnvirHum;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("AAAAAAAAAA____onCreateView");
return inflater.inflate(R.layout.fragment_one, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MainActivity activity = (MainActivity) getActivity();
View fragment0View = activity.fragments.get(0).getView();
aVuale_babyTemp = (TextView) fragment0View.findViewById(R.id.temp_vaule);
aVuale_babyWeight = (TextView) fragment0View.findViewById(R.id.weight_vaule);
aVuale_babyEnvirTemp = (TextView) fragment0View.findViewById(R.id.baby_envir_temp);
aVuale_babyEnvirHum = (TextView) fragment0View.findViewById(R.id.baby_envir_hum);
mainFragmentHandler();
System.out.println("AAAAAAAAAA____onActivityCreated");
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
System.out.println("AAAAAAAAAA____onAttach");
}
@Override
public void onStart() {
super.onStart();
System.out.println("AAAAAAAAAA____onStart");
}
@Override
public void onResume() {
super.onResume();
System.out.println("AAAAAAAAAA____onResume");
}
@Override
public void onPause() {
super.onPause();
System.out.println("AAAAAAAAAA____onPause");
}
@Override
public void onStop() {
super.onStop();
System.out.println("AAAAAAAAAA____onStop");
}
@Override
public void onDestroyView() {
super.onDestroyView();
System.out.println("AAAAAAAAAA____onDestroyView");
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("AAAAAAAAAA____onDestroy");
}
@Override
public void onDetach() {
super.onDetach();
System.out.println("AAAAAAAAAA____onDetach");
}
private void mainFragmentHandler(){
aVuale_babyTemp.setText("37.5");
aVuale_babyWeight.setText("10");
aVuale_babyEnvirTemp.setText("21"+"度");
aVuale_babyEnvirHum.setText("75"+"%");
}
}
twoFragment.java
public class twoFragment extends Fragment {
private static final String TAG = "liefyuan";
private TextView bVuale_Someking;
private TextView bVuale_BedTemp;
private TextView bVuale_EnvirTemp;
private TextView bVuale_EnvirHum;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("BBBBBBBBBBB____onCreateView");
return inflater.inflate(R.layout.fragment_two, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MainActivity activity = (MainActivity) getActivity();
View fragment1View = activity.fragments.get(1).getView();//不同的次Fragment有不同的值
bVuale_Someking = (TextView) fragment1View.findViewById(R.id.somking_value);
bVuale_BedTemp = (TextView) fragment1View.findViewById(R.id.bed_value);
bVuale_EnvirTemp = (TextView) fragment1View.findViewById(R.id.envir_temp_value);
bVuale_EnvirHum = (TextView) fragment1View.findViewById(R.id.envir_hum_value);
secondFragmentHandler();
System.out.println("BBBBBBBBBB____onActivityCreated");
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
System.out.println("BBBBBBBBBBB____onAttach");
}
@Override
public void onStart() {
super.onStart();
System.out.println("BBBBBBBBBBB____onStart");
}
@Override
public void onResume() {
super.onResume();
System.out.println("BBBBBBBBBBB____onResume");
}
@Override
public void onPause() {
super.onPause();
System.out.println("BBBBBBBBBBB____onPause");
}
@Override
public void onStop() {
super.onStop();
System.out.println("BBBBBBBBBBB____onStop");
}
@Override
public void onDestroyView() {
super.onDestroyView();
System.out.println("BBBBBBBBBBB____onDestroyView");
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("BBBBBBBBBBB____onDestroy");
}
@Override
public void onDetach() {
super.onDetach();
System.out.println("BBBBBBBBBBB____onDetach");
}
private void secondFragmentHandler(){
bVuale_Someking.setText("250");
bVuale_BedTemp.setText("38");
bVuale_EnvirTemp.setText("21");
bVuale_EnvirHum.setText("78");
}
}