当前位置:   article > 正文

Android 开发————5、Activity_activity重新显示时的方法

activity重新显示时的方法

Activity的四个重要状态


Activity的生命周期

Activity的回调函数

  1. onStart()方法:启动Activity时被回调,也就是当一个Activity变为显示时被回调。
  2. onRestart()方法:重新启动Activity时被回调,该方法总是在onStart()方法以后执行。
  3. onPause()方法:暂停Activity时被回调。该方法需要被非常快速地执行,因为直到该方法执行完毕之后,下一个Activity才能被恢复。在改方法中,通常用于持久保存数据。
  4. onResume()方法:当Activity由暂停状态恢复为活动状态时调用。调用该方法后,该Activity位于Activity栈的栈顶。该方法总是在onPause()方法之后执行。
  5. onStop()方法:停止Activity时被回调。
  6. onDestroy()方法:销毁Activity时被回调。

Activity的创建、配置、启动、关闭

创建部分:

A、创建一个Activity一般是继承android.app包中的Activity类,不过在不同的应用场景下,也可以继承Activity的子类。创建一个继承Activity类的Activity,名称为MainActivity的具体代码如下:

  1. import android.app.Activity;
  2. public class MainActivity extends Activity {
  3. }

B、之后需要重写需要的回调函数,一般情况下都需要重写onCreate()方法,并且在该方法中调用setContentView()方法设置要显示的视图。
例如,在步骤(1)中创建的Activity中,重写onCreate()方法,并且设置要显示的视图的具体代码如下:

  1. import android.app.Activity;
  2. public class MainActivity extends Activity {
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. }
  8. }

配置部分(在使用工具编程是会自动完成此操作):

创建Activity后,还需要在AndroidManifest.xml文件中配置该Activity,

具体的配置方法是在<application></application>标记中添加<activity></activity>标记实现。<activity>标记的基本格式如下:

  1. <activity
  2. android:icon="@drawable/图标文件名"
  3. android:name="实现类"
  4. android:label="说明性文字"
  5. android:theme="要应用的主题"
  6. >
  7. </activity>

例如上面的例子中:

  1. <application
  2. android:allowBackup="true"
  3. android:icon="@mipmap/ic_launcher"
  4. android:label="@string/app_name"
  5. android:roundIcon="@mipmap/ic_launcher_round"
  6. android:supportsRtl="true"
  7. android:theme="@style/AppTheme">
  8. <activity android:name=".LinearlayoutActivity">
  9. <intent-filter>
  10. <action android:name="android.intent.action.MAIN" />
  11. </intent-filter>
  12. </activity>
  13. </application>

启动部分:

  1. import android.app.Activity;
  2. public class MainActivity extends Activity {
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. Button button=(Button)findViewById(R.id.button1);
  8. button.setOnClickListener(new View.OnClickListener(){
  9. public void onClick(View v){
  10. Intent intent=new Intent(MainActivity.this,DetailActivity.class);//创建Intent对象
  11. startActivity(intent); //启动Activity
  12. }
  13. });
  14. }

关闭Activity

  1. import android.app.Activity;
  2. public class MainActivity extends Activity {
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. Button button=(Button)findViewById(R.id.button1);
  8. button.setOnClickListener(new View.OnClickListener(){
  9. public void onClick(View v){
  10. finish(); //关闭Activity
  11. }
  12. });
  13. }

Bundle在多个Activity中交换数据

实例:

  1. public class MainActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. Button submit=(Button)findViewById(R.id.submit); //获取提交按钮
  8. submit.setOnClickListener(new View.OnClickListener() {
  9. @Override
  10. public void onClick(View v) {
  11. String user=((EditText)findViewById(R.id.user)).getText().toString(); //获取输入的用户
  12. String pwd=((EditText)findViewById(R.id.pwd)).getText().toString(); //获取输入的密码
  13. String repwd=((EditText)findViewById(R.id.repwd)).getText().toString(); //获取输入的确认密码
  14. String email=((EditText)findViewById(R.id.email)).getText().toString(); //获取输入的E-mail地址
  15. if(!"".equals(user) && !"".equals(pwd) && !"".equals(email)){
  16. if(!pwd.equals(repwd)){ //判断两次输入的密码是否一致
  17. Toast.makeText(MainActivity.this, "两次输入的密码不一致,请重新输入!", Toast.LENGTH_LONG).show();
  18. ((EditText)findViewById(R.id.pwd)).setText(""); //清空密码编辑框
  19. ((EditText)findViewById(R.id.repwd)).setText(""); //清空确认密码编辑框
  20. ((EditText)findViewById(R.id.pwd)).requestFocus(); //让密码编辑框获得焦点
  21. }else{ //将输入的信息保存到Bundle中,并启动一个新的Activity显示输入的用户注册信息
  22. Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
  23. Bundle bundle=new Bundle(); //创建并实例化一个Bundle对象
  24. bundle.putCharSequence("user", user); //保存用户名
  25. bundle.putCharSequence("pwd", pwd); //保存密码
  26. bundle.putCharSequence("email", email); //保存E-mail地址
  27. intent.putExtras(bundle); //将Bundle对象添加到Intent对象中
  28. startActivity(intent); //启动新的Activity
  29. }
  30. }else{
  31. Toast.makeText(MainActivity.this, "请将注册信息输入完整!", Toast.LENGTH_LONG).show();
  32. }
  33. }
  34. });
  35. }
  36. }

获取部分:

  1. public class RegisterActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.register); //设置该Activity中要显示的内容视图
  6. Intent intent=getIntent(); //获取Intent对象
  7. Bundle bundle=intent.getExtras(); //获取传递的数据包
  8. TextView user=(TextView)findViewById(R.id.user); //获取显示用户名的TextView组件
  9. user.setText("用户名:"+bundle.getString("user")); //获取输入的用户名并显示到TextView组件中
  10. TextView pwd=(TextView)findViewById(R.id.pwd); //获取显示密码的TextView组件
  11. pwd.setText("密码:"+bundle.getString("pwd")); //获取输入的密码并显示到TextView组件中
  12. TextView email=(TextView)findViewById(R.id.email); //获取显示E-mail的TextView组件
  13. email.setText("E-mail:"+bundle.getString("email")); //获取输入的E-mail并显示到TextView组件中
  14. }
  15. }
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读