持续更新中。。。。。
src : 放置编写的源文件
gen: eclipse插件帮助生成的文件 R.java 千万不要修改它!!
res:放置的所有的资源都会在R.java中生成相应的ID,layout:布局文件xml,控制这个activity的位置、大小、宽窄,values:值。strings.xml:
assets: 放置任何文件
AndroidManifest.xml: 整个应用程序的配置文件
Intern的四个属性:
Component name 制定启动那个ActivityAction:执行那些操作DATA:传送哪些数据Extra:键值对,通过Intern传递到另外一个Activity
生命周期:
onCreate: 当第一次调用的时候onCreate
onStart :
当activity处于可见的时候就会调用onStart
onRetart:
当被遮挡住的时候,并没有被销毁,所以在此调用的时候会调用onRestart
onPause:
应用程序启动另外一个程序的时候(例如:来电话时候,生成一个新的activity,把当前的操作保存起来)
onResume: 获得焦点的时候调用!
onStop:
当activity处于不可见的时候就会调用onStop,第二个遮挡住第一个的时候会调用,如果只是一个对话框弹出来就不会调用
onDestory:
task的基本概念: a task is a stack id activities(一个栈)
Toast:是一个类,主要管理消息的提示。
makeText(),是Toast的一个方法,用来显示信息,分别有三个参数。
第一个参数:this,是上下文参数,指当前页面显示
第二个参数:“string string string ”是你想要显示的内容,也可以是“你好!”。这个是随便定义的,显示你想要显示的内容。
第三个参数:Toast.LENGTH_LONG,是你指你提示消息,显示的时间,这个是稍微长点儿,对应的另一个是ToastLENGTH_SHORT,这个时间短点儿,大概2秒钟。
show(),表示显示这个Toast消息提醒,当程序运行到这里的时候,就会显示出来,如果不调用show()方法,这个Toast对象存在,但是并不会显示,所以一定不要忘记。
简单应用:
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater=LayoutInflater.from(AlertDialogActivity.this);
final View textEntryView=inflater.inflate(R.layout.alert_dialog_text_entry, null);
final EditText usernameET=(EditText)textEntryView.findViewById(R.id.username_value);
final EditText passwordET=(EditText)textEntryView.findViewById(R.id.password_value);
//final String username=usernameET.getText().toString();
new AlertDialog.Builder(AlertDialogActivity.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle("温馨提醒")
.setView(textEntryView)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogActivity.this, "用户名="+usernameET.getText().toString()+"\n密码="+passwordET.getText().toString(), Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(AlertDialogActivity.this, "你选择了取消按钮!", Toast.LENGTH_SHORT).show();
}
})
.show();
}
});
在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。
目的: A.java 是主界面,B.java 是子功能模块,要从A启动B,B干完活之后把结果汇报给A
startActivityForResult与startActivity的不同之处在于:
1、startActivity( )
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。
1、startActivity( )
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( )
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。
关键代码如下:
Bundle1.java
package com.cellcom;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
/**
* @author nwang
*
* 输入身高和选择性别,计算标准体重。并把数据返回到原来Activity
*/
public class Bundle1Activity extends Activity {
private int my_requestCode=1550;
private RadioButton sexMan;
private RadioButton sexWoman;
private EditText heightEdit;
private Button okButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bundle1);
sexMan=(RadioButton)findViewById(R.id.sex_man);
sexWoman=(RadioButton)findViewById(R.id.sex_woman);
heightEdit=(EditText)findViewById(R.id.height_edit);
okButton=(Button)findViewById(R.id.button_ok);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double height=Double.parseDouble(heightEdit.getText().toString());
String sex="";
if(sexMan.isChecked()){
sex="M";
}else{
sex="F";
}
Intent intent=new Intent();
intent.setClass(Bundle1Activity.this, Bundle2Activity.class);
//封装数据
Bundle bundle=new Bundle();
bundle.putDouble("height", height);
bundle.putString("sex", sex);
intent.putExtras(bundle);
startActivityForResult(intent, my_requestCode);
}
});
}
//回调方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RESULT_OK:
//RESULT_OK表示返回成功,提取数据。
Bundle bundle=data.getExtras();
String sex=bundle.getString("sex");
double height=bundle.getDouble("height");
heightEdit.setText(String.valueOf(height));
if(sex.equals("M")){
sexMan.setChecked(true);
System.out.println("sssssssssssssssssssss");
}else{
sexWoman.setChecked(true);
}
break;
default:
break;
}
}
}
Bundle2.java:
package com.cellcom;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Bundle2Activity extends Activity{
private TextView result;
private Button backButton;
Intent intent=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.bundle2);
result=(TextView)findViewById(R.id.result);
backButton=(Button)findViewById(R.id.button_back);
intent=this.getIntent();
Bundle bundle=intent.getExtras();
double height=bundle.getDouble("height");
String sex=bundle.getString("sex");
String sexStr="";
if("M".equals(sex)){
sexStr="男性";
}else{
sexStr="女性";
}
String weight=this.getWeight(sex, height);
result.setText("你是一位:"+sexStr+"\n身高是:"+height+"厘米 \n你的标准体重:"+weight+"公斤");
//返回上一页
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle2Activity.this.setResult(RESULT_OK, intent);
Bundle2Activity.this.finish();
}
});
}
public String getWeight(String sex,double height){
String weight="";
if("M".endsWith(sex)){
weight=format((height-80)*0.7);
}else{
weight=format((height-70)*0.6);
}
return weight;
}
public String format(double num){
NumberFormat formatter=new DecimalFormat("0.00");
String s=formatter.format(num);
return s;
}
}
只有Bundle2Activity.this.finish();执行完成后才会自动跳转到bundle1.java的界面