1.注意:控件的id不能取名view,否则运行时会报错2.控件如果用的是系统提供的id,比如android:id="@id/android:list",则不用“+”,而且在代码中也不用getViewById的方式来取得该控件。
比如取得ListView:ListView listView=getListView();3.帮助文档的查看:打开javadoc视图,然后选择要查看的java类4.NullPointerException:一个空对象调用了一个方法,就会出现该异常.5.借助log cat解决异常,点击error…>出来异常信息,首先知道是什么类型的异常,然后查看产生异常信息的位置,只看以自己程序的包名开头的(以android,java,com,dalvik开头的都不是)。
解决方案就是根据错误位置,把空对象初始化。
6.多查看参考文档(特别是dev guide和reference两部分)7.匿名内部类,比如实现Runnable接口的线程类Runnable updateThread=new Runnable(){@Overridepublic void run() {System.out.println("UpdateThread");handler.postDelayed(updateThread, 3000);}};8.至少需要学习两种基础的协议,HTTP协议与Socket协议;9. .Linux基础知识:大家都知道,Android系统的基础是Linux操作系统。
在开发过程当中,我们也需要使用到一些Linux命令。
所以说一些Linux的基础知识是必须的(话说现在的程序员,不懂Linux都不好意思跟人家打招呼),推荐大家看看《鸟哥的私房菜》这本书,写的相当不错;10.在手机虚拟器上安装.apk软件1)运行模拟器2)打开命令行编辑器,CD到tools目录3)输入adb install apk_path一 activity常见控件Newworkspace1.关于menu的回调函数1)当用户点击menu按钮时触发的事件点击menu触发的生成按钮事件(menu包括该menu内的所有按钮对象,每一个按钮又叫menuitem) @Override//当点击menu按钮时触发的事件:生成两个按钮public boolean onCreateOptionsMenu(Menu menu) {/** menu.add(groupId, itemId, order, titleRes)* 组名条款项id 顺序号标题*/menu.add(0, 1, 1, R.string.about);menu.add(0, 2, 2, R.string.exit);return super.onCreateOptionsMenu(menu);}2)当用户点击menu菜单中某一个选项时,会调用:@Override//当点击menu内某一个menuitem时触发的回调函数(即点击该按钮后返回的信息) public boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId()==2){//即点击的是exit按钮,那么退出activityfinish();}return super.onOptionsItemSelected(item);}2.RadioGroup和RadioButton的使用方法RadioGroup genGroup=(RadioGroup)this.findViewById(R.id.genderGroup);/单选按钮组的监听器setOnCheckedChangeListenergenderGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener() {//如果RadioGroup中的那一个单选按钮被点击了就会触发该方法public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId==manButton.getId()){Toast.makeText(MainActivity.this, "man", 1).show();}else if(femailButton.getId()==checkedId){Toast.makeText(MainActivity.this, "femail", 1).show();}}});3.checkbox的使用CheckBox cdbox=(CheckBox)this.findViewById(R.id.chengdu);cdbox.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){Toast.makeText(MainActivity.this, "chengdu is checked",1).show();}}});4.ProgressBar进度条的使用方法<!-- 水平方式展示的进度条 gone是不可视的需要程序代码来改变它的可视状态 max表示进度条的总长度,当然也可以在代码中设置--><ProgressBar android:layout_width="200dp"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"android:id="@+id/firstBar"android:visibility="gone"android:max="200"/><!-- 默认进度条以圆圈形式来展示 --><ProgressBar android:layout_width="wrap_content"android:layout_height="wrap_content"style="?android:attr/progressBarStyle"android:id="@+id/secondBar"android:visibility="gone"/>setVisibility(View.VISIBLE);setMax(200);setProgress(i);setSecondaryProgress(i+10);5.ListView的使用方法6.DatePicker时期的设置使用,不用再layout文件中声明组件,直接在代码中实现即可//该常量用于标识DatePickerDialogprivate static final int DATE_PICKER_ID=1;1).showDialog(DATE_PICKER_ID); //然后会调用onCreateDialog()3). //监听器,监听用户点下DatePickerDialog的set按钮时,所设置的年月日信息DatePickerDialog.OnDateSetListener onDateSetListener=newDatePickerDialog.OnDateSetListener() {@Overridep ublic void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {Toast.makeText(MainActivity.this,year+"-"+(monthOfYear+1)+"-"+dayOfMonth, 1).show();}};2)..protected Dialog onCreateDialog(int id) {switch (id) {case DATE_PICKER_ID: //月份从0开始的,比如04表示第5月return new DatePickerDialog(MainActivity.this, onDateSetListener, 2011, 04, 18);}return super.onCreateDialog(id);}7.AutoCompleteTextView自动补全(至少输入2个字符以上)1)在布局文件中声明一个AutoCompleteTextView<AutoCompleteTextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/autoComplete"android:layout_marginLeft="5dp"/>2)在res/layout文件夹下新建一个布局文件,名为list_item.xml<?xml version="1.0"encoding="utf-8"?><TextViewxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:padding="10dp"android:textSize="16sp"android:textColor="#6666FF"></TextView>3) AutoCompleteTextView需要使用ArrayAdapter来提供数据:List<String> list=new ArrayList<String>(); //list或者string数组都可以list.add(“abcd”);list.add(“abed”)ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this,yout.list_item,list);4)为AutoCompleteTextView设置数据autoCompleteTextView.setAdapter(arrayAdapter);8.ExpandableListActivity和SimpleExpandableListAdapter的基本使用方法可理解成树状结构菜单,ListView:除了在main.xml中设置列表<ListView/>外,还需要对列表中的每一个条目进行设置,比如item.xmlExpandableListView:首先在main.xml中设置ExpandableListView,然后再对每个条目进行设置,因为是二级菜单,所以要设置两个xml,分别设置一级菜单和二级菜单.然后在MainActivity中设置数据SimpleExpandableListAdapter adapter=new SimpleExpandableListAdapter(this, groups, yout.group, new String[]{"group"}, newint[]{R.id.groupTo}, childs, yout.child, new String[]{"child"}, newint[]{R.id.childTo}) ;setListAdapter(adapter);9.SeekBar的基本使用方法:带有滑块的进度条10.RatingBar的基本使用方法:五星形状的进度条11.spanner的使用:下拉框1)在main.xml中加入<Spinner android:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/spannerId"/>2)创建ArrayAdapter对象获得数据的两种方式a.在string.xml中声明一个数组<string name="hello">Hello World, MainActivity!</string><string name="app_name">spanner</string><string-array name="planets_array"><item>街舞</item><item>娱乐</item><item>体育</item><item>音乐</item><item>电影</item></string-array>b.动态创建ArrayAdapter二.Appwidget 添加桌面应用程序开放目的:如果能够显示在桌面上,则用户能够随时看到,就会增加程序的点击率,被频繁使用.注意:AppWidget和MainActivity不是运行在同一个进程当中。