Activity的四个重要状态
Activity的生命周期
Activity的回调函数
onStart()方法:启动Activity时被回调,也就是当一个Activity变为显示时被回调。
onRestart()方法:重新启动Activity时被回调,该方法总是在onStart()方法以后执行。
onPause()方法:暂停Activity时被回调。该方法需要被非常快速地执行,因为直到该方法执行完毕之后,下一个Activity才能被恢复。在改方法中,通常用于持久保存数据。
onResume()方法:当Activity由暂停状态恢复为活动状态时调用。调用该方法后,该Activity位于Activity栈的栈顶。该方法总是在onPause()方法之后执行。
onStop()方法:停止Activity时被回调。
onDestroy()方法:销毁Activity时被回调。
Activity的创建、配置、启动、关闭
创建部分:
A、创建一个Activity一般是继承android.app包中的Activity类,不过在不同的应用场景下,也可以继承Activity的子类。创建一个继承Activity类的Activity,名称为MainActivity的具体代码如下:
import android.app.Activity;
public class MainActivity extends Activity {
}
B、之后需要重写需要的回调函数,一般情况下都需要重写onCreate()方法,并且在该方法中调用setContentView()方法设置要显示的视图。
例如,在步骤(1)中创建的Activity中,重写onCreate()方法,并且设置要显示的视图的具体代码如下:
import android.app.Activity;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
配置部分(在使用工具编程是会自动完成此操作):
创建Activity后,还需要在AndroidManifest.xml文件中配置该Activity,
具体的配置方法是在<application></application>标记中添加<activity></activity>标记实现。<activity>标记的基本格式如下:
<activity
android:icon="@drawable/图标文件名"
android:name="实现类"
android:label="说明性文字"
android:theme="要应用的主题"
…
>
…
</activity>
例如上面的例子中:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".LinearlayoutActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>
启动部分:
import android.app.Activity;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent intent=new Intent(MainActivity.this,DetailActivity.class);//创建Intent对象
startActivity(intent); //启动Activity
}
});
}
关闭Activity
import android.app.Activity;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
finish(); //关闭Activity
}
});
}
Bundle在多个Activity中交换数据
实例:
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button submit=(Button)findViewById(R.id.submit); //获取提交按钮
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user=((EditText)findViewById(R.id.user)).getText().toString(); //获取输入的用户
String pwd=((EditText)findViewById(R.id.pwd)).getText().toString(); //获取输入的密码
String repwd=((EditText)findViewById(R.id.repwd)).getText().toString(); //获取输入的确认密码
String email=((EditText)findViewById(R.id.email)).getText().toString(); //获取输入的E-mail地址
if(!"".equals(user) && !"".equals(pwd) && !"".equals(email)){
if(!pwd.equals(repwd)){ //判断两次输入的密码是否一致
Toast.makeText(MainActivity.this, "两次输入的密码不一致,请重新输入!", Toast.LENGTH_LONG).show();
((EditText)findViewById(R.id.pwd)).setText(""); //清空密码编辑框
((EditText)findViewById(R.id.repwd)).setText(""); //清空确认密码编辑框
((EditText)findViewById(R.id.pwd)).requestFocus(); //让密码编辑框获得焦点
}else{ //将输入的信息保存到Bundle中,并启动一个新的Activity显示输入的用户注册信息
Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
Bundle bundle=new Bundle(); //创建并实例化一个Bundle对象
bundle.putCharSequence("user", user); //保存用户名
bundle.putCharSequence("pwd", pwd); //保存密码
bundle.putCharSequence("email", email); //保存E-mail地址
intent.putExtras(bundle); //将Bundle对象添加到Intent对象中
startActivity(intent); //启动新的Activity
}
}else{
Toast.makeText(MainActivity.this, "请将注册信息输入完整!", Toast.LENGTH_LONG).show();
}
}
});
}
}
获取部分:
public class RegisterActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register); //设置该Activity中要显示的内容视图
Intent intent=getIntent(); //获取Intent对象
Bundle bundle=intent.getExtras(); //获取传递的数据包
TextView user=(TextView)findViewById(R.id.user); //获取显示用户名的TextView组件
user.setText("用户名:"+bundle.getString("user")); //获取输入的用户名并显示到TextView组件中
TextView pwd=(TextView)findViewById(R.id.pwd); //获取显示密码的TextView组件
pwd.setText("密码:"+bundle.getString("pwd")); //获取输入的密码并显示到TextView组件中
TextView email=(TextView)findViewById(R.id.email); //获取显示E-mail的TextView组件
email.setText("E-mail:"+bundle.getString("email")); //获取输入的E-mail并显示到TextView组件中
}
}