1、Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满屏的,但也可以是一个小的位于其它Activity之上的浮动窗口。一个Android工程至少有一个Activity,Activity上面可布有多个view的实例,如文本框、进度条、复选框、按钮等等。多个Activity之间通过Intent来实现跳转。
注:每新建一个activity,就要继承(extends)Activity类,复写onCreate(bundle)方法,然后绑定此activity的布局文件XML
- public class secondactivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.secondactivity);//绑定布局文件
- }
- }
public class secondactivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);//绑定布局文件
}
}
最后还必须在AndroidManifest.xml里面注册这个新增加的activity
- <activity
- android:label="second"
- android:name=".secondactivity" >
- </activity>
<activity
android:label="second"
android:name=".secondactivity" >
</activity>
2、下面为Activity的继承关系,可见Activity继承与Contex类。
3、Activity的生命周期
其生命周期有如下几种
onCreate()、onRestart()、onStart()、onResume()、onPause()、onStop()、onDestroy()
注:
一般更新activity,要复写onResume(),然后在里面写更新的处理方法。
onpause方法与onstop方法的区别。
如果第二个activity没有完全遮挡住第一个activity时,如第二个activity是对话框形式到时候。就只调用第一个activity的onpause方法。
当第二个对话框完全遮挡住第一个对话框到时候,即第二个Activity是满屏状态,就会调用第一个Activity的onpause和onstop方法。
另外关于onResume方法,只用来获取用户焦点的(其实就是鼠标点击或者拖动之类的),即当前Activity处于激活状态。
- //第一个activity启动第二个activity的顺序
- first activity
- --onpause
- second activity
- --oncreate
- --onstart
- --onresume
- firsr activity
- --onstop//满屏状态
- //--退掉第二个activity的顺序,接上面
- second activity
- --onpause
- first activity
- --onrestart----------------->和oncreate差不多
- --onstart
- --onresume
- second activity
- --onstop
- --ondestroy
//第一个activity启动第二个activity的顺序
first activity
--onpause
second activity
--oncreate
--onstart
--onresume
firsr activity
--onstop//满屏状态
//--退掉第二个activity的顺序,接上面
second activity
--onpause
first activity
--onrestart----------------->和oncreate差不多
--onstart
--onresume
second activity
--onstop
--ondestroy
4、Activity之间的跳转与intent
- //第一个Activity
- package conowen.Activity.intent;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- public class IntentActivity extends Activity {
- /** Called when the Activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //新建一个按钮和一个编辑框
- Button bt = (Button) findViewById(R.id.bt);// 通过id找到在main.xml设定的button,
- // 而且还强制转换为Button类型,使用findViewById时,前面都要加强制类型。
- bt.setOnClickListener(new View.OnClickListener() {
- // setOnClickListener里面的参数本来为View.OnClickListener,但是可以直接在里面new这个类的实例,然后写出实例就行
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent = new Intent();
- EditText et = (EditText)findViewById(R.id.et);
- String tempstr=et.getText().toString();
- //.toString()方法表示返回String类型
- intent.putExtra("result", tempstr);
- //把值塞入intent,让其传递到第二个Activity,intent相当于邮差,携带数据
- //"result", tempstr表示键值对,result对应的值为tempstr
- intent.setClass(IntentActivity.this, secondactivity.class);
- // IntentActivity为第一个Activity,secondActivity为第一个Activity
- IntentActivity.this.startActivity(intent);// 开始跳转到第二个Activity
- }
- });
- }
- }
//第一个Activity
package conowen.Activity.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class IntentActivity extends Activity {
/** Called when the Activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//新建一个按钮和一个编辑框
Button bt = (Button) findViewById(R.id.bt);// 通过id找到在main.xml设定的button,
// 而且还强制转换为Button类型,使用findViewById时,前面都要加强制类型。
bt.setOnClickListener(new View.OnClickListener() {
// setOnClickListener里面的参数本来为View.OnClickListener,但是可以直接在里面new这个类的实例,然后写出实例就行
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
EditText et = (EditText)findViewById(R.id.et);
String tempstr=et.getText().toString();
//.toString()方法表示返回String类型
intent.putExtra("result", tempstr);
//把值塞入intent,让其传递到第二个Activity,intent相当于邮差,携带数据
//"result", tempstr表示键值对,result对应的值为tempstr
intent.setClass(IntentActivity.this, secondactivity.class);
// IntentActivity为第一个Activity,secondActivity为第一个Activity
IntentActivity.this.startActivity(intent);// 开始跳转到第二个Activity
}
});
}
}
- //第二个Activity
- package conowen.Activity.intent;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.widget.TextView;
- public class secondactivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.secondactivity);
- Intent intent=getIntent();
- //获取intent
- TextView textview=(TextView) findViewById(R.id.textview);
- String res=intent.getStringExtra("result");
- //通过键值对的键result,获取相对应的数值
- int resint=Integer.parseInt(res);
- //把字符串转为整型
- textview.setText(resint+"");
- //(resint为整型)后面加双引号,表示括号里面的都是字符串了。
- //其实这里在括号里面直接写res即可,res本为String类型的,熟悉一下转换方法而已
- }
- }
//第二个Activity
package conowen.Activity.intent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class secondactivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity);
Intent intent=getIntent();
//获取intent
TextView textview=(TextView) findViewById(R.id.textview);
String res=intent.getStringExtra("result");
//通过键值对的键result,获取相对应的数值
int resint=Integer.parseInt(res);
//把字符串转为整型
textview.setText(resint+"");
//(resint为整型)后面加双引号,表示括号里面的都是字符串了。
//其实这里在括号里面直接写res即可,res本为String类型的,熟悉一下转换方法而已
}
}