Activity的生命周期与跳转-作业2

1使用log展示生命周期的状态变化

启动后

2022-10-18 19:47:00.060 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onCreate
2022-10-18 19:47:00.062 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onStart
2022-10-18 19:47:00.067 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onResume

切到后台

2022-10-18 19:50:40.262 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onPause
2022-10-18 19:50:40.368 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onStop

再次唤醒

2022-10-18 19:51:07.583 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onRestart
2022-10-18 19:51:07.584 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onStart
2022-10-18 19:51:07.585 10599-10599/com.example.myapplication D/zt: 这是生命周期MainActivity3:onResume



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        Log.d("zt", "这是生命周期MainActivity3:onCreate");
    }


    @Override
    protected void onStart() {
        super.onStart();
        Log.d("zt", "这是生命周期MainActivity3:onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("zt", "这是生命周期MainActivity3:onResume");

    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("zt", "这是生命周期MainActivity3:onRestart");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("zt", "这是生命周期MainActivity3:onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("zt", "这是生命周期MainActivity3:onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("zt", "这是生命周期MainActivity3:onDestroy");
    }



2列表项的单项点击功能

点击recycleview的某一项后跳转到新的activity

跳转传值代码如下(在 Adapter_chat中)

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public void onBindViewHolder(@NonNull Myholder holder, @SuppressLint("RecyclerView") int position) {
        holder.textView1.setText(listname.get(position));
        holder.textView2.setText(listdata.get(position));
        holder.linearLayout_item1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {
                if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) {
                    Intent intent = new Intent(holder.itemView.getContext(), chat_Activity.class);
                    intent.putExtra("name",listname.get(position));
                    intent.putExtra("msg" ,listdata.get(position));
                    context.startActivity(intent);
                }
                return true;
            }
        });
    }

使用intent连接到chat_Activity.class
使用startActivity(intent)实现跳转

3实现activityforresult功能

创建一个按钮, 新建一个activity2, 点击按钮使得activity2传值

按钮代码(在chat_Activity中)

  button_love.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(chat_Activity.this, Activity2.class);
                test.launch(intent);//启动函数
            }
        });
    public ActivityResultLauncher<Intent> test = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {

                @SuppressLint("SetTextI18n")
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == 2) {
                        TextView textView_love = findViewById(R.id.love_number);
                        textView_love.setText(result.getData().getStringExtra("result") + "人与你同时点赞");
                    }
                }
            }
    );
    
    

创建ActivityResultLauncher test
ActivityResultLauncher带有launch()
这里设置只接受getResultCode(类似信号灯)为2的信息
在按钮的监听事件里启动, 即test.launch(intent)
Intent intent = new Intent(chat_Activity.this, Activity2.class);
与Activity2.class连接

Activity2代码如下


public class Activity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
        Intent intent4 = getIntent();
        Random r = new Random();
        int i = r.nextInt(200);
        intent4.putExtra("result", String.valueOf(i));
        setResult(2, intent4);
        finish();//结束MainActivity
    }
}

传值, 并用finish()结束Activity2

代码仓库

zt20xx/zuoye2 (github.com)

posted @   zt20xx  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示