我对您的代码进行了少许更改,以便在我的电脑上运行它。
MainActivity.java
textView=findViewById(R.id.textView);
textView.setVisibility(View.INVISIBLE);
//make textView visible
Intent i= getIntent();
String value = i.getStringExtra("buttonStatus");
if (i!=null && value!=null && value.equals("Visible")) {
textView.setVisibility(View.VISIBLE);
}
//button to go to second activity
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
}
});
SecondActivity.java
Button create = findViewById(R.id.create);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
intent.putExtra("buttonStatus", "Visible");
startActivity(intent);//launch main activity again
}
});
这使得 textView 在 MainActivity 中可见。
但如果你按返回按钮返回 MainActivity,你将看不到任何变化。
当您的应用程序启动时,应用程序堆栈中只有 MainActivity。我们称之为 MainActivity1。
然后,您按一个按钮转到 SecondActivity。您的应用程序堆栈内容现在是:- MainActivity1 / SecondActivity
然后,当您从 SecondActivity MainActivity2 再次启动 MainActivity 时,进入堆栈。
堆栈变为 MainActivity1 / SecondActivity / MainActivity2。
更改在 MainActivity2 中可见,在 MainActivity1 中不可见。如果使用返回按钮返回 MainActivity1,textView 仍然是不可见的。
还要注意,MainActivity1 是从另一个 Intent 启动的,而 MainActivity2 是从 SecondActivity 中的不同 Intent 启动的。
编辑:-
如果您想在 MainActivity1 中进行更改,您需要使用 startActivity 来获取结果。需要进行以下代码更改:-
MainActivity.java
textView=findViewById(R.id.textView);
textView.setVisibility(View.INVISIBLE);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(i,100);
}
});
//在onCreate之外
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data!=null)
{
String value = data.getStringExtra("buttonStatus");
if(value!=null && value.equals("Visible")) {
Log.d("Debug", "i am here.");
textView.setVisibility(View.VISIBLE);
}
}
}
SecondActivity.java
Button create = findViewById(R.id.create);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
intent.putExtra("buttonStatus", "Visible");
setResult(RESULT_OK, intent);
finish();
}
});
在此处阅读有关此更改的更多信息how-to-pass-data-from-2nd-activity-to-1st-activity-when-pressed-back-android