Android 开发————5、Activity

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组件中

    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值