您的位置:首页 > 移动开发 > Android开发

Android学习小结2

2014-11-04 11:31 274 查看
几天学习的笔记,没能整理组织有点乱,若有错误不准确的地方望能有人指出。

3、RadioGroup

RadioGroup是多个单选项目的控件,如注册信息时男女选择控件。一个RadioGroup容器内可有多个RadioButton控件,但只要给RadioGroup设置监听器。具体实现示例如下:

布局文件:

<RadioButton

android:id="@+id/maleRaButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/male" />

<RadioButton

android1:id="@+id/femaleRaButton"

android1:layout_width="wrap_content"

android1:layout_height="wrap_content"

android1:text="@string/female" />

</RadioGroup>

消息监听部分(此处采用内部类的实现方式):

genderRaGroup.setOnCheckedChangeListener(new GenderGroupOnCheckedChangeListener());

private class GenderGroupOnCheckedChangeListener implements OnCheckedChangeListener{

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

// TODO 自动生成的方法存根

if(maleRaButton.getId()==checkedId){

customerGender=Register_1.this.getString(R.string.male);//加双引号将int转换成string类型

Toast.makeText(Register_1.this,customerGender, Toast.LENGTH_SHORT).show();

}

else if(femaleRaButton.getId()==checkedId){

customerGender=Register_1.this.getString(R.string.female);//加双引号将int转换成string类型

Toast.makeText(Register_1.this,customerGender, Toast.LENGTH_SHORT).show();

}

else

{

customerGender="genderError";

Toast.makeText(Register_1.this,"genderError", Toast.LENGTH_SHORT).show();

}

}

}

也可采用匿名内部类的方式,但在匿名内部类中使用

外部类组件时出错故不使用。

4、Toast短暂显示提示内容

Toast可短暂的时间内显示内容,如启用联网程序时提示无可用网络等。实现方式如下:

Toast toast=Toast.makeText(Register_1.this,customerGender, Toast.LENGTH_SHORT);第一个参数为context容器对象,第一个为要显示的字符串,第三个问显示的时间常量,有些版本仅提供LENGTH_SHORT和LENGTH_LONG两个常量。

可通过toast.show()方法显示出来。

可通过toast.setView(View);设置自定义样式。

5、CompoundButton/CheckedBox/Progress教程01_12至01_13

进度条progressBar布局文件示例:

Progress设置进度方法:bar.setProgress(Int int);

设置进度条可见:bar.setVisibility(View.VISIBLE);

6、Handler(01_14教程)

handler的post方法可将创建的线程加入线程队列队列,removeCallBack(View v);方法从队列中移除;

Handler的sendMessage(Msg);方法可以将消息加入消息队列,handler获取系统消息:

Message msg=handler.obtainMessage();即可得到两个消息msg.arg1和msg.arg2。

Android操作系统提供Message类,可传递消息。

1)首先创建Handler

Handler handler=new Handler();

2)创建线程

创建线程有两种方式:1、继承Tread的类;2、实现runnable接口;

实现runnable接口实现run()方法示例:

Runnable thread=new Runnable(){

@override

Public void OnClick(View v){

/*线程处理程序,如下载过程*/

Handler.post(thread,2000);//延时2000毫秒将线程thread加入线程队列

Handler.post(thread);//立即将线程thread加入线程队列

}

}//该线程因为没有复写start()方法所以没有创建新的线程,仅实现了接口Runnable的run方法,实际上是在主线程中直接执行了run()方法,而没有执行创建新的线程。

FAQ

1、app下载到模拟器中一直异常退出

(项目registerActivity的Register_1)

原因:可以确定不是布局文件内容及其配置的问题,而是主程序***activity.java中的错误导致;进一步测试发现当RadioButton按下时程序异常退出得知为RadioGroup设置的监听器有问题;进一步发现是使用匿名内部类作为监听器导致错误。

解决办法:使用内部类代替匿名内部类,如下:

genderRaGroup.setOnCheckedChangeListener(new GenderGroupOnCheckedChangeListener());

}

private class GenderGroupOnCheckedChangeListener implements OnCheckedChangeListener{

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

// TODO 自动生成的方法存根

if(maleRaButton.getId()==checkedId){

//customerGender=R.string.male+"";//加双引号将int转换成string类型

}

else if(femaleRaButton.getId()==checkedId){

//customerGender=R.string.female+"";//加双引号将int转换成string类型

}

else

customerGender="genderError";

Toast.makeText(Register_1.this,customerGender, Toast.LENGTH_LONG).show();

}

}

2、Logcat为空,看不到System.out信息

原因猜想:可能是logcat分配的存储空间的问题导致eclipse运行几个程序后就不能继续写日志了。

解决办法:先关闭Logcat,再重启eclipse,然后重新打开Logcat(在window->showView->other->Log)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: