如何在 Android 中发回捆绑包

How can I send back Bundle in Android

我已经创建了登录表单以及登录成功的时间。它将转到 MainActivity.javaMainActivity 中有一个 button 可以通过 intent 发送用户名和密码进入帐户设置。像这样:

editu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                    Intent i = new Intent(MainActivity.this, EditUser.class);
                    i.putExtra("id",mUser.getId());
                    i.putExtra("username",mUser.getUsername());
                    i.putExtra("pass",mUser.getPassword());
                    startActivity(i);
                    //finish();
        }
    });

并且在 EditUser.class 中有 Bundle 来获取如下信息:

Bundle args = getIntent().getExtras();

但是当我完成帐户管理后,我想通过 home button<- 上的选项卡返回主页 (MainActivity)(下面 link 中的图片)。它将退出应用程序。

Link is here

而且我意识到由于 MainActivity

中的这种情况
if (null == args) {
        Toast.makeText(this, getString(R.string.welcome_error_message),
                Toast.LENGTH_SHORT).show();
        finish();
    }

但我不知道,如何将 intentEditUser.class 发送回 MainActivity.class 我试过下面的代码,但没有用。 (EditUser 上的代码)

public void onBackPressed() {
    Intent i = new Intent(this,MainActivity.class);
    i.putExtra(User.Column.ID,mUser.getId());
    i.putExtra(User.Column.USERNAME,mUser.getUsername());
    i.putExtra(User.Column.PASSWORD,mUser.getPassword());
    startActivity(i);
}

为此您必须使用 onActivityResult()。 将数据设置为意图并通过点击后退按钮点击传递它。

首先您需要使用 startActivityForResult(intent, requestCode); 调用 MainActivity。那么你确实喜欢下面的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {

        // Do something

    }

}

编辑:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pedido);

    // You have to enable the home button on action bar doing the following
    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);

}

那么你还必须做:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == android.R.id.home) {

        finish();

        return true;
    }
    else {
        return MenuActionBar.optionsItemSelected(this, null, item)
                ? true : super.onOptionsItemSelected(item);
    }

}