My app has two button, first button will show a new Activity on second screen, and second button will update that Activity with some data.
But once the second Activity started, I cannot startActivity again. Also, I cannot kill the second Activity. How can I kill the Activity and then restart it?
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
binding.btnShowScreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showSecondDisplay();
}
});
binding.btnSetData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showSecondDisplayWithData();
}
});
}
private void showSecondDisplay(){
DisplayManager displayManager = (DisplayManager)getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = displayManager.getDisplays();
if(displays.length > 1){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(displays[1].getDisplayId());
startActivity(
new Intent(this, MainActivity2.class),
options.toBundle()
);
}
}else{
Toast.makeText(this,"No second display", Toast.LENGTH_SHORT).show();
}
}
private void showSecondDisplayWithData(){
DisplayManager displayManager = (DisplayManager)getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = displayManager.getDisplays();
if(displays.length > 1){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(displays[1].getDisplayId());
Intent intent = new Intent(this, MainActivity2.class);
intent.putExtra("data", "this is data");
startActivity(intent, options.toBundle());
}
}else{
Toast.makeText(this,"No second display", Toast.LENGTH_SHORT).show();
}
}
}
public class MainActivity2 extends AppCompatActivity {
private ActivityMain2Binding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMain2Binding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Bundle extras = getIntent().getExtras();
if (extras != null) {
String data = extras.getString("data");
binding.viewData.setText(data);
}
}
}