收集了一下日常android应用开发过程中遇到的问题,简单的进行了总结,于是有了这个帖子,欢迎广大android爱好者留言!
1 楼 azone.mobi 2010-05-05
2010-04-10: savedInstanceState对象介绍
代码:
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
说明:任何Activity类都需要实现onCreate方法,savedInstanceState对象会保存Activity上一次关闭时的状态;
代码:
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
说明:任何Activity类都需要实现onCreate方法,savedInstanceState对象会保存Activity上一次关闭时的状态;
2 楼 azone.mobi 2010-05-05
2010-04-11: 在代码中如何设置Activity对于的content view
代码:
....
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.report);
...
}
说明:content view对应的就是一个layout xml文件,编译好后可以在项目的R文件中找到;
代码:
....
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.report);
...
}
说明:content view对应的就是一个layout xml文件,编译好后可以在项目的R文件中找到;
3 楼 azone.mobi 2010-05-05
2010-04-12: 如何查找Content View中的控件
代码:
...
Button button = (Button) findViewById(R.id.button);
TextView tv = (TextView) findViewById(R.id.text_view);
...
代码:
...
Button button = (Button) findViewById(R.id.button);
TextView tv = (TextView) findViewById(R.id.text_view);
...
4 楼 azone.mobi 2010-05-05
2010-04-12: 如何设置控件的属性
代码:
...
TextView tv = (TextView) findViewById(R.id.text_view);
tv.setText(R.string.result_title); //使用引用值
tv.setText("属性值"); //直接设置属性值
tv.setText(getText(R.string.result_title) + "属性值"); //组合值 正确的设置方式
//tv.setText(R.string.result_title + "属性值"); //组合值 错误的设置方式
...
说明:想查找需要设置属性的控件,然后设置属性,设置属性是如果属性值是一个组合值(如多个字符串相加)且有使用
应用值时需要先获取引用值;
代码:
...
TextView tv = (TextView) findViewById(R.id.text_view);
tv.setText(R.string.result_title); //使用引用值
tv.setText("属性值"); //直接设置属性值
tv.setText(getText(R.string.result_title) + "属性值"); //组合值 正确的设置方式
//tv.setText(R.string.result_title + "属性值"); //组合值 错误的设置方式
...
说明:想查找需要设置属性的控件,然后设置属性,设置属性是如果属性值是一个组合值(如多个字符串相加)且有使用
应用值时需要先获取引用值;
5 楼 azone.mobi 2010-05-05
2010-04-13: 关于对话框(Dialog)
代码1:最基本的对话框
new AlertDialog.Builder(MyActivity.this)
.setTitle("Android dialog...")
.setMessage("这是android对话框!")
.show();
说明:可以在一些空间的事件响应中添加对话框;
代码2:为对话框添加肯定按钮(Positive Button)
new AlertDialog.Builder(MyActivity.this)
.setTitle("Android dialog...")
.setMessage("这是android对话框!")
.setPositiveButton(R.string.about_ok_label, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
})
.show();
说明:添加Positive Button的dialog必须要按系统的回退按钮在dailog才会推出,添加Positive Button后按Positive Button后
就会直接关闭dailog;
代码3:为对话框添加浏览按钮(Negative Button)
new AlertDialog.Builder(MyActivity.this)
.setTitle("Android dialog...")
.setMessage("这是android对话框!")
.setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface arg0, int arg1) {
Uri uri = Uri.parse(getText(R.string.homepage_path).toString());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}).show();
代码1:最基本的对话框
new AlertDialog.Builder(MyActivity.this)
.setTitle("Android dialog...")
.setMessage("这是android对话框!")
.show();
说明:可以在一些空间的事件响应中添加对话框;
代码2:为对话框添加肯定按钮(Positive Button)
new AlertDialog.Builder(MyActivity.this)
.setTitle("Android dialog...")
.setMessage("这是android对话框!")
.setPositiveButton(R.string.about_ok_label, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
})
.show();
说明:添加Positive Button的dialog必须要按系统的回退按钮在dailog才会推出,添加Positive Button后按Positive Button后
就会直接关闭dailog;
代码3:为对话框添加浏览按钮(Negative Button)
new AlertDialog.Builder(MyActivity.this)
.setTitle("Android dialog...")
.setMessage("这是android对话框!")
.setNegativeButton(R.string.homepage_label, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface arg0, int arg1) {
Uri uri = Uri.parse(getText(R.string.homepage_path).toString());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}).show();
6 楼 azone.mobi 2010-05-05
2010-04-14: Toast消息框
代码:
...
Toast.makeText(MyActivity.this, "Toast消息框测试", Toast.LENGTH_SHORT).show();
...
说明:dialog要求用户必须要按下某些按钮才可以继续原程序,而消息框则这只是给予提示,不会打断用户的操作;
代码:
...
Toast.makeText(MyActivity.this, "Toast消息框测试", Toast.LENGTH_SHORT).show();
...
说明:dialog要求用户必须要按下某些按钮才可以继续原程序,而消息框则这只是给予提示,不会打断用户的操作;
7 楼 azone.mobi 2010-05-05
2010-04-15: 为应用添加菜单(menu)
代码1:使用代码方式添加菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_ABOUT, 0, "About...")
.setIcon(android.R.drawable.ic_menu_help);
menu.add(0, MENU_QUIT, 0, "Quit")
.setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_QUIT :
finish();
break;
default :
break;
}
return super.onOptionsItemSelected(item);
}
说明:为了添加菜单,您的activity类需要实现onCreateOptionsMenu和onOptionsItemSelected两个方法,其中
onCreateOptionsMenu方法中提供创建菜单的实现,onOptionsItemSelected方法中提供菜单选择事件响应实现;
在创建菜单时,可以使用一些androind平台提供的drawable资源(如图标等);
代码1:使用代码方式添加菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_ABOUT, 0, "About...")
.setIcon(android.R.drawable.ic_menu_help);
menu.add(0, MENU_QUIT, 0, "Quit")
.setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_QUIT :
finish();
break;
default :
break;
}
return super.onOptionsItemSelected(item);
}
说明:为了添加菜单,您的activity类需要实现onCreateOptionsMenu和onOptionsItemSelected两个方法,其中
onCreateOptionsMenu方法中提供创建菜单的实现,onOptionsItemSelected方法中提供菜单选择事件响应实现;
在创建菜单时,可以使用一些androind平台提供的drawable资源(如图标等);
8 楼 azone.mobi 2010-05-05
2010-04-17: 关于Activity之间的数据传递
代码1:Activity之间进行跳转
private OnClickListener openTargetListener = new OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(ThisActivity.this, TargetActivity.class);
startActivity(intent);
}
};
说明:使用意图(intent)进行activity之间的跳转
代码2:使用Bundle携带在Activity之间进行跳转时的数据
In ThisActivity.java
//传递数据到下一个TargetActivity:
private OnClickListener openTargetListener = new OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(ThisActivity.this, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString(MyConstant.KEY_HEIGHT, fHeight.getText().toString());
bundle.putString(MyConstant.KEY_WEIGHT, fWeight.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
}
};
In TargetActivity.java
//从上一个Activity中获取数据:
Bundle bundle = this.getIntent().getExtras();
double height = Double.parseDouble(bundle.getString(BMIConstant.KEY_HEIGHT));
double weight = Double.parseDouble(bundle.getString(BMIConstant.KEY_WEIGHT));
说明:使用意图(intent)进行activity之间的跳转,使用Bundle携带数据,在Androind中Bundle是一种特殊的‘map’,
它使用key->value的方式来进行访问。
代码1:Activity之间进行跳转
private OnClickListener openTargetListener = new OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(ThisActivity.this, TargetActivity.class);
startActivity(intent);
}
};
说明:使用意图(intent)进行activity之间的跳转
代码2:使用Bundle携带在Activity之间进行跳转时的数据
In ThisActivity.java
//传递数据到下一个TargetActivity:
private OnClickListener openTargetListener = new OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(ThisActivity.this, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString(MyConstant.KEY_HEIGHT, fHeight.getText().toString());
bundle.putString(MyConstant.KEY_WEIGHT, fWeight.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
}
};
In TargetActivity.java
//从上一个Activity中获取数据:
Bundle bundle = this.getIntent().getExtras();
double height = Double.parseDouble(bundle.getString(BMIConstant.KEY_HEIGHT));
double weight = Double.parseDouble(bundle.getString(BMIConstant.KEY_WEIGHT));
说明:使用意图(intent)进行activity之间的跳转,使用Bundle携带数据,在Androind中Bundle是一种特殊的‘map’,
它使用key->value的方式来进行访问。
9 楼 azone.mobi 2010-05-05
2010-04-26: 在使用模拟器进行调试时如何导入android.jar的源代码?
在当前项目选择的target platform跟目录下创建一个叫‘sources’的目录(SDK_HOME\android-2.1\sources),把android.jar的源代码拷贝到这个目录下,然后重新build项目就可以使用源代码进行调试了。
在当前项目选择的target platform跟目录下创建一个叫‘sources’的目录(SDK_HOME\android-2.1\sources),把android.jar的源代码拷贝到这个目录下,然后重新build项目就可以使用源代码进行调试了。
10 楼 azone.mobi 2010-05-05
2010-05-5: android关于menu的分类
在android中,menu分为
1.Options Menu:
选择菜单,隶属于某一个Activity,用户在点击‘MENU’KEY时弹出;
它包含两个menu item组:icon menu和expanded menu,但incon menu的数量超过8个时(老的版本是6个),就会以expanded menu的方式展示多余的menu,这种menu叫expanded menu;
2.Context Menu:
长按菜单,与某个view关联(用户长按住某个view时显示context menu,context menu以列表的方式显示,可以设置其中元素的选择属性)
3.Submenu:
Submenu是某个Options Menu 或者Context Menu中的item的子menu,Submenu不支持嵌套(不能再嵌套submenu);
在android中,menu分为
1.Options Menu:
选择菜单,隶属于某一个Activity,用户在点击‘MENU’KEY时弹出;
它包含两个menu item组:icon menu和expanded menu,但incon menu的数量超过8个时(老的版本是6个),就会以expanded menu的方式展示多余的menu,这种menu叫expanded menu;
2.Context Menu:
长按菜单,与某个view关联(用户长按住某个view时显示context menu,context menu以列表的方式显示,可以设置其中元素的选择属性)
3.Submenu:
Submenu是某个Options Menu 或者Context Menu中的item的子menu,Submenu不支持嵌套(不能再嵌套submenu);