手机商城第二天,各个功能按钮的切换与显示不同界面

这几天晚上练习科目三,一般都到10点多回来,所以更新比较晚。
代码已上传到码云上,有兴趣的可以下载看看

https://git.oschina.net/joy_yuan/ShoppingMall


上个项目中,页面切换,是做了一个BasePage,然后在里面利用了构造方法,调用构造时,就初始化其中的控件,然后在切换具体的页面时,再加载其中的数据。

在本项目中,是做了一个BaseFragment extends Fragment,然后按照Fragment的生命周期:

1、onCreate()

2、onCreateView()

3、onActivityCreated()

来完成初始化与加载数据。关于这三个方法,上篇博客,手机商城第一天里已经有解释了,这三个方法是按照时间顺序,从第一个开始执行,到最后一个执行完毕,所以可以在onCreateView 里初始化控件,在onActivityCreated里加载数据

这2中方法各有优点,就看大家的喜欢了。



【手机商城第二天,各个功能按钮的切换与显示不同界面】一、切换各个页面,显示不同的内容
就先显示主页面的第一个页面,简单的在其中写一个textview

package com.yuanlp.shoppingmall.home.fragment; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Color; import android.view.Gravity; import android.view.View; import android.widget.TextView; import com.yuanlp.shoppingmall.base.BaseFragement; /** * Created by 原立鹏 on 2017/8/8. * 主页面的Fragment */@SuppressLint("ValidFragment") public class HomeFragment extends BaseFragement{ private TextView textView; @SuppressLint("ValidFragment") public HomeFragment(Context context) {}/** * 强制子类实现他,让在oncreateview里显示这个布局。 * * @return */ @Override public View initview() { textView=new TextView(context); //调用的父类里的上下文 textView.setGravity(Gravity.CENTER); textView.setTextSize(25); textView.setTextColor(Color.RED); return textView; }@Override public void initData() { super.initData(); textView.setText("主页面"); System.out.println("开始加载数据--------------------------"); } }

2、MainActivity里切换页面
a、先在oncreate里初始化一下各个页面(暂时就2个页面,其他的一样可以初始化)

baseList=new ArrayList(); baseList.add(new HomeFragment(this)); baseList.add(new ShoppingFragment(this));

b、设置radioGroup的监听事件,当radioGroup的选中按钮变化时,回调该方法,并切换视图页面

mRgMain.setOnCheckedChangeListener(new MyOnCheckedChangeListener()); mRgMain.check(R.id.rb_home); class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { switch (checkedId){ case R.id.rb_home: position=0; System.out.println("onCheckedChanged:--------111----------------------------------------- "); Log.d(TAG, "onCheckedChanged:--------111----------------------------------------- "); break; case R.id.rb_cart: position=1; break; default: position=0; Log.d(TAG, "onCheckedChanged:------------------------------------------------- "); break; } setFragement(); //切换视图页面 }

c、根据当前选中状态,切换页面


private void setFragement() { System.out.println("setFragement: --------------------------------------------"); Log.d(TAG, "setFragement: --------------------------------------------"); FragmentManager fragmentManager=getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); BaseFragement baseFragement=baseList.get(position); transaction.replace(R.id.framelayout,baseFragement); transaction.commit(); }



这篇博客主要是总结了2中切换Fragment的方法,从难易程度来说,还是这个比较简单点。
这里面调试时,有lod.d()这个Android自带的输出,也有System.out.println()这个java自带的输出,但是有时候,如果出错的话,log.d()这个方法是不显示其中的内容的,而java自带的这个输出可以正常输出,可以让我们知道程序执行到哪一步报错的。


有兴趣的可以下载我的2个代码看看。

转载于:https://blog.51cto.com/cm0425/1954653

    推荐阅读