Android应用程序设计 ——监听与组件(2)

关键字:一组相关的选项,用户可以选择一个或多个,甚至不选择

Xml文件中:<CheckBox/>

Java代码中:CheckBox

  • 常用属性设置

1)android:text                  设置文字

2)android:textColor             设置文字颜色

3)android:textSize              设置文字大小

4)android:checked               设置是否被选中true:选中,false:未选中

  1. Activity中常用的方法
  2. getText().toString()          获取文字             
  3. setChecked()                     设置选中状态 true:选中,false:未选中
  4. isChecked()                   判断选中状态
    1. 监听事件OnCheckedChangeListener

有2种实现方式:控件对象绑定监听事件/当前类实现接口

  • 绑定匿名监听器

//获取CheckBox实例

CheckBox cb1 = (CheckBox)this.findViewById(R.id.cb1);

//绑定匿名监听器

cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

If(arg1) {//判断是否被选中,其中参数arg0:操作的CheckBox,arg1:选中状态

System.out.println(“您选中了:” + arg0.getgetText().toString());

}        

    }

});

  • 当前类实现OnCheckedChangeListener接口

public class LoveMovieActivity extends Activity implements

         OnCheckedChangeListener {

    protected void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_lovemovie);

//获取CheckBox实例

CheckBox cb1 = (CheckBox)this.findViewById(R.id.cb1);

CheckBox cb2 = (CheckBox)this.findViewById(R.id.cb2);

//绑定自身监听类

cb1.setOnCheckedChangeListener(this);

cb2.setOnCheckedChangeListener(this);

}

   //实现接口的onCheckedChanged()方法

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

         switch (buttonView.getId()) {

         case R.id.cb1://根据操作CheckBoxid来判断具体哪个CheckBox

代码块   //操作空间cb1的代码

break;  

         case R.id.cb2:

代码块   //操作空间cb2的代码

break;  

default:

    break;

}

}

一组相互排斥又相关的选项,用户可以选择一个且只能选择一个选项

Xml中控件:<RadioButton/>

Java代码中:RadioButton

  • 常用属性设置

1)android:text                  设置文字

3)android:checked               设置是否被选中true:选中,false:未选中

  1. Activity中RadioButton常用的方法
  2. getText().toString()          获取文字             
  3. setChecked()                     设置选中状态 true:选中,false:未选中
  4. isChecked()                   判断选中状态
    1. 监听事件OnCheckedChangeListener
      1. 绑定匿名监听器

//获取RadioGroup实例
RadioGroup group = (RadioGroup)this.findViewById(R.id.radioGroup);
//绑定一个匿名监听器,必须是RadioGroup添加
group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

//arg0:操作的RadioGroup,ag1:操作的RadioButton的id
    public void onCheckedChanged(RadioGroup arg0, int arg1) {

//获取选中的RadioButton的id

//int radioButtonId = arg0.getCheckedRadioButtonId();

//通过id找到对应的RadioButton

//RadioButton rb = (RadioButton)findViewById(radioButtonId);

//直接使用ag1:操作的RadioButton的id 也可以
    RadioButton rb = (RadioButton)findViewById(arg1);
    System.out.println(“您选中了:” + rb.getgetText().toString());}});

  • 当前类实现OnCheckedChangeListener接口

public class LoveFruitActivity extends Activity implements OnCheckedChangeListener {

    protected void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_lovemovie);

//获取RadioButton实例

RadioButton rb1 = (RadioButton)this.findViewById(R.id.rb1);

RadioButton rb2 = (RadioButton)this.findViewById(R.id.rb2);

//绑定自身监听类

rb1.setOnCheckedChangeListener(this);

rb2.setOnCheckedChangeListener(this);

}

   //实现接口的onCheckedChanged()方法

public void onCheckedChanged(RadioGroup arg0, int arg1) {

         switch (arg0.getCheckedRadioButtonId()) {

         case R.id.rb1://根据操作RadioButtonid来判断具体哪个RadioButton

代码块   //操作空间rb1的代码

break;  

         case R.id.rb2:

代码块   //操作空间rb2的代码

break;  

default:

    break;

}

}

  • RadioGroup介绍

相互排斥又相关的选项设置为一组,使选项相互排斥

  • RadioButton和RadioGroup的关系

1)RadioButton表示单个圆形单选框,RadioGroup是可以容纳多个RadioButton的容器

2)每个RadioGroup中的RadioButton同时只能有一个被选中

3)不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中

4)大部分情况下,一个RadioGroup中至少有2个RadioButton

5)大部分情况下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置

    1. Activity中RadioGroup常用的方法
  1. getCheckedRadioButtonId()    获取RadioGroup中选中RadioButton的id
    1. 监听事件
      1. 绑定匿名监听器

//获取RadioGroup实例
RadioGroup group = (RadioGroup)this.findViewById(R.id.radioGroup);
//绑定一个匿名监听器,必须是RadioGroup添加
group.setOnCheckedChangeListener(new OnCheckedChangeListener() {

//arg0:操作的RadioGroup,ag1:操作的RadioButton的id
    public void onCheckedChanged(RadioGroup arg0, int arg1) {

//获取选中的RadioButton的id

//int radioButtonId = arg0.getCheckedRadioButtonId();

//通过id找到对应的RadioButton

//RadioButton rb = (RadioButton)findViewById(radioButtonId);

//直接使用ag1:操作的RadioButton的id 也可以
    RadioButton rb = (RadioButton)findViewById(arg1);
    System.out.println(“您选中了:” + rb.getgetText().toString());}});

  • 当前类实现OnCheckedChangeListener接口

public class LoveFruitActivity extends Activity implements OnCheckedChangeListener {

    protected void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_lovemovie);

//获取RadioButton实例

RadioButton rb1 = (RadioButton)this.findViewById(R.id.rb1);

RadioButton rb2 = (RadioButton)this.findViewById(R.id.rb2);

//绑定自身监听类

rb1.setOnCheckedChangeListener(this);

rb2.setOnCheckedChangeListener(this);

}

   //实现接口的onCheckedChanged()方法

public void onCheckedChanged(RadioGroup arg0, int arg1) {

         switch (arg0.getCheckedRadioButtonId()) {

         case R.id.rb1://根据操作RadioButtonid来判断具体哪个RadioButton

代码块   //操作空间rb1的代码

break;  

         case R.id.rb2:

代码块   //操作空间rb2的代码

break;  

default:

    break;

}

}

 

  • Fragment介绍

Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

  • 生命周期

Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的说明了两者生命周期的关系:

 

Xml声明

  1. 创建Fragment使用的XML布局文件,如activity_fragment2.xml

2)创建类(自定义类名),必须继承Fragment

//必须继承Fragment,重写onCreateView()方法,实现onCreateView()方法设置返回值。

public class Fragment2 extends Fragment{

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle b) {

      //设置返回iew对象的布局

      //参数:1 绑定的布局;2 所属的父控件;

//3 是否绑定触摸事件监听:必须设置,不然切换窗体错误

      return inflater.inflate(R.layout.activity_fragment2, container,false);

}

  1. 使用

动态加载Fragment常用的方法

1)getFragmentManager()                       

2)beginTransation()                          

3)replace(containerViewId, fragment, tag)

4)add(containerViewId, fragment, tag)        

5)remove(fragment)                           

6)getActivity()                              

getFragmentManager().beginTransaction().replace (

//替换已经显示的Fragment

R.id.activity_main_frameLayout,                   //公共显示的区域,一般使用FrameLayout

fragment1).commit();                              //显示的Fragment对象

 

 

猜你喜欢

转载自blog.csdn.net/qq_42595261/article/details/81838567