繁体   English   中英

go 如何通过按下带有一些数据的后退按钮返回上一个活动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM