(一)Activity的初步
/*
* 创建Activity的要点
* 1.一个Activity就是一个类,并且这个类要继承Activity
* 2.要重写onCreate方法
* 3.每一个Activity都需要在AndroidManifest.xml中进行配置
* 4.为Activity添加必要的控件
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView myTextView=(TextView)findViewById(R.id.myTextView);
Button myButton=(Button)findViewById(R.id.myButton);
myTextView.setText("我的第一个TextView");
myButton.setText("我的第一个Button");
}
//在AndroidManifest.xml中进行配置
<activity android:name=".ResultActivity">
//在main.xml中创建界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/myTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"></Button>
</LinearLayout>
(二)Activity和Intent(做一个简单的乘法运算,并用Intent对象传递两个操作参数到另外一个Activity)
/*一个Intent对象包含了一组信息:
* 1.Component name:启动另外的哪一个Activity
* 2.Action:另外一个Activity要做什么
* 3.Data:传递什么类型的数据
* 4.Category
* 5.Extras:存储key/value
* 6.Flags
*/
a.新建一个Activity_03.xml,文件的内容如下:
private EditText factorOne;
private TextView symobol;
private EditText factorTwo;
private Button calculate;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过ID取得代表控件的对象
factorOne=(EditText)this.findViewById(R.id.factorOne);
symobol=(TextView)this.findViewById(R.id.symbol);
factorTwo=(EditText)this.findViewById(R.id.factorTwo);
calculate=(Button)this.findViewById(R.id.calculate);
//为symobol和calculate设置显示的值(也可以在string.xml文件中设置它们显示的内容,通过id来 获得它们的值)
// symobol.setText("乘以");
// calculate.setText("计算");
symobol.setText(string.symbol);
calculate.setText(string.calculate);
//将监听器对象绑定到按钮对象
calculate.setOnClickListener(new CalculateListener());
}
//点击menu按钮时,调用该方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 1,R.string.exist);
menu.add(0, 2, 2,R.string.about);
return super.onCreateOptionsMenu(menu);
}
//当点击菜单中的某一个选项时,会调用该方法(把你点击的那个选项作为参数传递过来)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getItemId()==0)
{
this.finish(); //结束Activity
}
return super.onOptionsItemSelected(item);
}
//创建一个内部类
class CalculateListener implements OnClickListener
{
public void onClick(View arg0) {
// TODO Auto-generated method stub
//取得两个EditText的值
String factorOneStr=factorOne.getText().toString();
String factorTwoStr=factorTwo.getText().toString();
//将两个值放到Intent对象中
Intent intent=new Intent();
intent.putExtra("one",factorOneStr);
intent.putExtra("two",factorTwoStr);
intent.setClass(Activity_03.this,ResultActivity.class);
//使用Intent对象来启动ResultActivity
Activity_03Activity.this.startActivity(intent);
}
}}
b.新建一个ResultActivity.xml
//接收从Activity_03中传过来的两个值
//计算两个值的积并输出
public class ResultActivity extends Activity{
private TextView resultView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.result);
resultView=(TextView)this.findViewById(R.id.result);
//得到Intent对象中的值
Intent intent=this.getIntent();
String factorOne=intent.getStringExtra("one").toString();
String factorTwo=intent.getStringExtra("two").toString();
int factorOneInt=Integer.parseInt(factorOne);
int factorTwoInt=Integer.parseInt(factorTwo);
//计算两个值的积
int resultInt= factorOneInt*factorTwoInt;
resultView.setText(resultInt+"");
}
}
(三)通过onSaveInstanceState()方法来保存Activity的状态(onSaveInstanceState()在onStop或onPause方法之前被调用,如果在应用程序的主界面,按返回,则不会被调用)
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putString(CONTENT,factorOne.getText().toString() );
}
则就可以在onCreate()方法中获得我们所保存的Activity的状态
if(savedInstanceState!=null&&savedInstanceState.containsKey(CONTENT))
{
factorOne.setText(savedInstanceState.getString(CONTENT));
}