startActivityForResult方法过时替代方法

传值的地方使用方法不变,只改变启动的方式。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //返回值接收
        ActivityResultLauncher resultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if (result.getResultCode() == 2151) {
                    String value = result.getData().getStringExtra("result");
                    Toast.makeText(MainActivity.this, value, Toast.LENGTH_SHORT).show();
                }
            }
        });

        (findViewById(R.id.t_hello)).setOnClickListener(ivew -> {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            //代替startActivityForResult
            resultLauncher.launch(intent);
        });
    }

}
public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        (findViewById(R.id.t_hello)).setOnClickListener(ivew -> {
            Intent intent = new Intent();
            intent.putExtra("result", "Success!");
            setResult(2151, intent);
            finish();
        });
    }

}

猜你喜欢

转载自blog.csdn.net/go12355/article/details/129375773