如何在Android中发回Bundle

时间:2015-04-29 11:45:12

标签: java android android-intent

我创建了登录表单,登录成功时。它将转到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.classBundle获取以下信息:

Bundle args = getIntent().getExtras();

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

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);
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

首先,您需要使用MainActivity来呼叫startActivityForResult(intent, requestCode);。然后你会喜欢以下代码:

@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);
    }

}