Activity生命周期与跳转

Activity生命周期与跳转

新建activity

新建ChattingActivity,用作聊天对象的展示页面

   

---

 

 参数传递

复制代码
 1 public class ChattingActivity extends AppCompatActivity {
 2 
 3     private ActivityChattingBinding binding;
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         super.onCreate(savedInstanceState);
 7         setContentView(R.layout.activity_chatting);
 8         binding = ActivityChattingBinding.inflate(getLayoutInflater());
 9         setContentView(binding.getRoot());
10         TextView title = findViewById(R.id.title);
11         Intent intent = getIntent();
12         String str_title = intent.getStringExtra("title");
13         title.setText(str_title);
14     }
复制代码

获取参数

创建intent对象,使用getStringExtra获取参数

参数绑定

使用findViewById获取TextView对象,使用setText绑定参数

页面跳转

复制代码
 1     private void initRecyclerView() {
 2         mCollectRecyclerView=binding.chatRecyclerView;
 3         mCollectRecyclerAdapter = new myAdapter(getActivity(), chatEntities);
 4         //给RecyclerView设置adapter
 5         mCollectRecyclerView.setAdapter(mCollectRecyclerAdapter);
 6         //设置layoutManager,可以设置显示效果,是线性布局、grid布局,还是瀑布流布局
 7         //参数是:上下文、列表方向(横向还是纵向)、是否倒叙
 8         mCollectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
 9         //设置item的分割线
10         mCollectRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
11         //RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义
12         mCollectRecyclerAdapter.setOnItemClickListener(new myAdapter.OnItemClickListener() {
13             @Override
14             public void OnItemClick(View view, ChatEntity data) {
15                 //此处进行监听事件的业务处理
16                 Toast.makeText(getActivity(),"你点击了我的消息",Toast.LENGTH_SHORT).show();
17                 Intent intent=new Intent();
18                 String title = data.getChatName();
19                 intent.putExtra("title",title);
20                 intent.setClass(getActivity(), ChattingActivity.class);
21                 getActivity().startActivity(intent);
22             }
23         });
24     }
复制代码

点击事件监听

RecyclerView中没有item的监听事件,需要自己在适配器中写一个监听事件的接口。参数根据自定义
在OnItemClick里面写入点击事件

 页面跳转

依然是新建Intent对象

通过setClass()设置将要跳转的页面

startActivity实现页面跳转,开启ChattingActivity页面生命周期

参数传递

通过intent对象putExtra()传递参数

这里使用"title"作为key

如果需要传递多个参数,可以使用多个putExtra

实现Activity无跳转传参

效果

点击悬浮球,Toast打印ResultActivity传递过来的参数

 

 

 "你收藏了本对话"为ResultActivity传递过来的参数

ResultActivity

复制代码
 1 public class ResultActivity extends AppCompatActivity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_result);
 7         Intent intent = getIntent();
 8         intent.putExtra("result", "你收藏了本对话");
 9         setResult(2, intent);
10         finish();
11     }
12 }
复制代码

ChattingActivity接受参数

重写FloatingActionButton点击事件

1 FloatingActionButton floatingActionButton = findViewById(R.id.floatingActionButton);
2         floatingActionButton.setOnClickListener(new View.OnClickListener() {
3             @Override
4             public void onClick(View view) {
5                 Intent intent1 = new Intent(ChattingActivity.this, ResultActivity.class);
6                 test.launch(intent1);
7             }
8         });

ActivityResultLauncher

复制代码
 1     public ActivityResultLauncher<Intent> test = registerForActivityResult(
 2             new ActivityResultContracts.StartActivityForResult(),
 3             new ActivityResultCallback<ActivityResult>() {
 4                 @Override
 5                 public void onActivityResult(ActivityResult result) {
 6                     if (result.getResultCode() == 2){
 7 
 8                         FloatingActionButton floatingActionButton = findViewById(R.id.floatingActionButton);
 9                         floatingActionButton.setBackgroundColor(Color.parseColor("#DAB649"));
10                         String notice = result.getData().getStringExtra("result");
11                         Toast.makeText(ChattingActivity.this,notice,Toast.LENGTH_SHORT).show();
12                     }
13                 }
14             }
15     );
复制代码

 

代码仓库

https://github.com/yoyo-sanchez/yoyo/tree/main/Wechat3
posted @   yoyo_sanchez  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示