Android学习笔记(一)

来源:互联网 发布:西班牙无敌舰队知乎 编辑:程序博客网 时间:2024/05/16 06:14

Android-Activity(一)

Activity间数据传递

1. 向上一个Activity传递数据

假设有两个Activity,分别为Activity1, Activity2,由Activity1的Button Bstart启动Activity2,则代码如下:

Activity1:    Bstart.OnClickListener( v -> {       Intent int = new Intent(Activity1.this, Activity2.class);       startActivityForResult(int, INTENT_ID_1);    });Activity2:    Bresult.OnClickListener( v -> {       Intent int = new Intent();       int.putExtra("data_return", "....");       setResult(RESULT_OK, intent);       finish();    });Activity1:    @Override    protected void onActivityResult(int request, int resultCode, Intent int) {        switch(request)        {            case INTENT_ID_1:                if(resultCode == RESULT_OK) {                    String data = int.getStringExtra("data_return");                    ...                }                break;        }    }

但此时,存在的问题是:点击back键则无法将结果返回
此时,需要重写Activity2中的onBackPressed()方法:

@Overrideprotected void onBackPressed() {    ...    Intent int = new Intent();       int.putExtra("data_return", "....");       setResult(RESULT_OK, intent);       finish();}

即可解决问题

2.利用Bundle传递数据

Bundle data = new Bundle();data.putString();data.putInt();data.put....Intent intent = new Intent(....);Intent.putExtra("data1", data);startActivity(intent);

Activity四种状态

1.运行

此时该Activity位于返回栈栈顶

2.暂停

非栈顶,但可见

3.停止

非栈顶,不可见,但会保留相应状态及成员变量(不可靠),当内存不足时,会被回收

4.销毁

从返回栈中移除时,则为销毁状态

当被销毁时,临时数据的保存方法

此时是这样一个情形:点击Activity1中的按键进入Activity2,再返回,则Acivity1会重新创建,则Activity1的数据会丢失。
此时采用调用onSaveInstanceState(Bundle b),并重写onCreate(Bundle b)方法来解决。

@Overrideprotected void onSaveInstanceState(Bundle state) {    super.onSaveInstanceState(sate);    state.putString("", "");    ....}@Overrideprotected void onCreate(Bundle b) {    ...    if(b != null) {        String data = b.getString("..");        ...    }}