如何在 Android 中发回捆绑包
How can I send back Bundle in Android
我已经创建了登录表单以及登录成功的时间。它将转到 MainActivity.java
在 MainActivity
中有一个 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 中的图片)。它将退出应用程序。
而且我意识到由于 MainActivity
中的这种情况
if (null == args) {
Toast.makeText(this, getString(R.string.welcome_error_message),
Toast.LENGTH_SHORT).show();
finish();
}
但我不知道,如何将 intent
从 EditUser.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);
}
}
我已经创建了登录表单以及登录成功的时间。它将转到 MainActivity.java
在 MainActivity
中有一个 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 中的图片)。它将退出应用程序。
而且我意识到由于 MainActivity
if (null == args) {
Toast.makeText(this, getString(R.string.welcome_error_message),
Toast.LENGTH_SHORT).show();
finish();
}
但我不知道,如何将 intent
从 EditUser.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);
}
}