Activity的生命周期与跳转

#Activity的生命周期与跳转
##功能的实现
##实现的结果
###实现功能包括:一、在微信聊天界面Recyclerview列表项增加单项点击功能,点击后跳转到新建立的activity1。二、实现最新的activityforresult功能,在activity1添加按钮可收到另一个新建立的activity2的回传值。三、使用log展现跳转时生命周期的状态变化。
####功能一的实现:
在微信聊天界面的recyclerview的item列表添加一个button控件

<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_weight="1"
        android:text="详情" />

在适配器Myadpter绑定Button控件,并设置点击事件,同时,该点击时间实现的功能是跳转到另一个activity界面,因此使用intent机制,它可以实现两个组件之间的连接,通过传递一个Intent对象至 Context.startActivity()以载入一个activity

public void onBindViewHolder(@NonNull Myadpter.MyViewHolder holder, int position) {
//        将数据和控件绑定
        holder.textView4.setText(list_chat.get(position));
        holder.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context,jump_MainActivity1.class);
                intent.putExtra("zhangyujia","18");
                context.startActivity(intent);
            }
        });
    }
public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView4;
        Button button;
        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            textView4=itemView.findViewById(R.id.textView4);//滚动时快速设置值
            button=itemView.findViewById(R.id.button1);
        }

    }

同时,被跳转的新的activity1可以通过调用 getIntent() 方法来查看激活它的intent.
#####功能二的实现:
在activity1界面增添一个button按钮,用于实现跳转到activity2

<Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="再跳转"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.585" />

在activity实现的功能包括:绑定控件按钮并设计点击事件实现页面的跳转及数据的回传。
这里使用ActivityResultLauncher实现activity(fragment)之间的通信,同样也是使用intent连接,返回一个activityresult.其中包含两个方法,ActivityResultContracts.StartActivityForResult()用于实现页面的跳转,ActivityResultCallback()用于传参。使用ActivityResultLauncher的实例即可激活。

public ActivityResultLauncher test=registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if(result.getResultCode()==2)
                    {
                        TextView textView=findViewById(R.id.textView9);
                        textView.setText(result.getData().getStringExtra("age1"));
                    }
                }
            }
    );

同时使用被跳转的activity使用setResult(int, Intent),会返回一个intent对象(可以携带数据),和整形数据(返回码),目的是确定将值返回给哪一个activity。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jump_main2);
        Intent intent2=getIntent();
        intent2.putExtra("age1",intent2.getStringExtra("age1")+intent2.getStringExtra("age2"));
//        TextView textView;
//        textView=findViewById(R.id.textView10);
//        textView.setText((CharSequence) intent2);
        setResult(2,intent2);
        finish();
    }

####功能三的实现:

@Override
    protected void onStart() {
        super.onStart();
        Log.d("zyj","这是主界面的onstart");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("zyj","这是主界面的onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("zyj","这是主界面的onDestroy");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("zyj","这是主界面的onPause");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("zyj","这是主界面的onRestart");
    }

    @Override
    public void recreate() {
        super.recreate();
        Log.d("zyj","这是主界面的recreate");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("zyj","这是主界面的onResume");
    }

###实现的结果
####虚拟机运行结果
微信聊天界面
从微信聊天界面跳转到的新的activity1
点击“在跳转"按钮后得到回传值的activity1
####由log展现出来的activity生命周期
由主界面跳转到activity1
由activity1收到activity2的回传值
按返回键,由activity1返回到微信聊天主界面
仓库地址:https://gitee.com/kelsey-zhang/my-program_new

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值