栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android:Activity Result API页面销毁时数据的传输java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android:Activity Result API页面销毁时数据的传输java

由于老师出了这么一道作业题:

上课在睡觉的我一脸懵逼,然后查了下老师说的
startActivityForResult发现此方法已经过时,将要或已经被Activity Result Api取代
然后就看了下这个东西的用法,网上多数为kt的文章,java较少

这里推荐两篇比较好的文章
搞懂 Activity Result API (一)
Android Activity之间的数据返回

下面贴出我的代码
MainActivity :

package com.example.myapplication;

import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContract;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    Button bt;
    EditText in,out;

    ActivityResultContracts.StartActivityForResult contract = new ActivityResultContracts.StartActivityForResult();
    //注册销毁返回值 监听器
    ActivityResultCallback callBack= new ActivityResultCallback() {
        @Override
        public void onActivityResult(ActivityResult result) {
            Intent data = result.getData();
            out.setText(data.getStringExtra("callBackText"));
        }
    };
    private ActivityResultLauncher mActivityBLauncher = registerForActivityResult(contract, callBack);


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt=findViewById(R.id.ac1bt);
        in=findViewById(R.id.ac1in);
        out=findViewById(R.id.ac1out);

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,MainActivity2.class);
                intent.putExtra("in",in.getText().toString());
                mActivityBLauncher.launch(intent);

            }
        });
    }
}

MainActivity 2:

package com.example.myapplication;

import android.content.Intent;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity2 extends AppCompatActivity {

    EditText in;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //获取上个页面传来的值
        Intent intent= getIntent();
        String intxt=intent.getStringExtra("in");
        in=findViewById(R.id.ac2in);
        in.setText(intxt);

    }

    @Override
    public void onBackPressed() {
        //还是新建一个Intent,只是此时Intent只是作为传递数据使用,并没有其他的意图
        Intent intent = new Intent();
        //需要返回的数据
        String data = in.getText().toString();
        //在intent当中调用putExtra()方法来把数据返回
        intent.putExtra("callBackText",data);
        //setResult()方法是返回数据时必须要使用到的额,这里需要两个参数
        //一个参数来和getStringExtra()方法当中的参数项对应
        //后一个参数和当前Activity中的数据data对应
        setResult(2,intent);
        //返回数据后结束当前活动
        finish();
    }


}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855168.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号