使用默認contract類 StartActivityForResult
MainActivity 代碼
public class MainActivity extends AppCompatActivity {
//You need to registerForActivityResult before onStart of the Activity.
ActivityResultLauncher<Intent> mStartForResult = registerForActivityResult(new StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == Activity.RESULT_OK) {
Toast.makeText(MainActivity.this, result.getData().getStringExtra("result"), Toast.LENGTH_SHORT).show();
}
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
intent.putExtra("post", "123");
mStartForResult.launch(intent);
}
});
}
}
MainActivity2代碼
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toast.makeText(this,getIntent().getStringExtra("post"), Toast.LENGTH_SHORT).show();
findViewById(R.id.button_2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setResult(RESULT_OK, new Intent().putExtra("result", "哈哈哈"));
finish();
}
});
}
}
自定義contract類
class ResultContract extends ActivityResultContract<Boolean, String> {
@NonNull
@Override
public Intent createIntent(@NonNull Context context, Boolean input) {
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
intent.putExtra("post", input);
return intent;
}
@Override
public String parseResult(int resultCode, @Nullable Intent intent) {
return intent.getStringExtra("result");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/287181.html
標籤:其他
