Activity之间跳转实现--安卓作业2

一.要求分析 

目前已经利用adapter实现了将数据传输recycleview界面。这次作业主要是利用intent传递参数并实现activity之间的跳转

1.在Adapter中的内部类viewholder中设置一个监听,用于recyclerview中每一个item

myviewholder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(context,ItemActivity.class);
                context.startActivity(intent);
            }
        });

2.设置好监听之后,需要新建一个activity用来加载详情界面

 3.将recyclerview中item的内容加载到详情页面对应的activity中

Itemactivity中的代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item);
        textView=findViewById(R.id.itemtextView2);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(ItemActivity.this,resultActivity.class);
                test.launch(intent);
            }
        });
    }

调用onActivityResultLauncher获取跳转之后界面传递回来的状态,数据等信息

public ActivityResultLauncher test = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>(){

                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == 888){
                        Log.d("xr","onActivityResultLauncher...");
                        textView.setText(result.getData().getStringExtra("data"));
                    }
                }
            });

4.resultActivity

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        Intent intent=getIntent();
        intent.putExtra("data","今天是安卓课,老师是肖蓉"+"上课时间是"+ Calendar.getInstance().getTime());
        setResult(888,intent);
        finish();
    }

二、核心技术
1)intent和bundle:

intent用于从一个activity跳转到另一个activity。在调和被调的activity中的intent书写形式不一样。
bundle可以看作一个键值对列表。这个列表非常人性化的地方在于,它的value值可以是整型,char,String各种类型都可。并且每一个value值你可以给它一个名字,方便访问。它和intent配合使用的时候就可以让intent不只是只能带一个值而是可以带多个并且是不同种类的值。简直不要太好!
学了intent之后我也想了以下为什么之前传值的时候要自己写一个私有类MyAdapter而不是直接用intent。intent和adapter都是传值,这两者之间到底有什么区别??后来我仔细想了想,adpter传值可以看作静态的,即将一系列静态的数据传到我们写的界面中,我们不需要两个activity之间调用就可以将数据传入;而intent是在我们操作activity的过程中传值的工具,它传值的条件建立在一个activity调用另一个activity的过程中。所以这两者区别还是挺大的。
2)onActivityResult:

在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回来的状态,数据等信息。这个时候,我们不一定需要使用Intent进行跳转回原来设置的界面,而是使onActivityResult方法就可以解决这个问题。

三.结果展示

四.实验小结

本次实验主要完成了intent传值和activity之间的跳转,通过本次实验我了解了如何使用onActivityResult来进行界面间的跳转和传递数据,了解了跳转和跳转到的activity中调

用的intent的写法不同
 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值