[英]How to go back to the previous activity by pressing the back button with some data?
我试图通过按下后退按钮从第二个活动中获取一些数据。 但是每当我按下后退按钮时,我都会退出应用程序 - 不会进入上一个活动。 我附上了后退按钮的图像。 这是我的代码。
**MainActivity:**
public class MainActivity extends AppCompatActivity {
private TextView myTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView myTextView = (TextView) findViewById(R.id.txtV);
Button myBtn = (Button)findViewById(R.id.btnF);
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Second.class);
activityResultLaunch.launch(intent);
}
});
}
ActivityResultLauncher<Intent> activityResultLaunch = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == 123) {
Intent data = result.getData();
assert data != null;
String myStr = data.getStringExtra("MyData");
myTextView.setText(myStr);
}
}
});
}
第二个活动:
public class Second extends AppCompatActivity {
private EditText myEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
myEditText = (EditText) findViewById(R.id.editTextSec);
}
@Override
public void onBackPressed() {
String data = myEditText.getText().toString();
Intent intent = new Intent();
intent.putExtra("MyData", data);
setResult(123, intent);
finish();
}
编辑文本的默认值为null
,所以在按下返回按钮之前输入一些内容。
更安全的方法是在使用它之前检查它的值:
import android.text.TextUtils;
Intent data = result.getData();
String myStr = data.getStringExtra("MyData");
if (!TextUtils.isEmpty(myStr )) {
//Do something
}
谢谢大家的回答。 通过删除我在第 7 行的 mainactivity 中犯的愚蠢错误解决了这个问题,在该错误中我两次声明了 TextView 类型。 没有你的帮助,我无法解决它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.