按下后退按钮时将正确的信息传递给上一个 Activity
Passing The Proper Information To Previous Activity When Back Button Pressed
我正在使用以下代码实现工具栏中的后退按钮:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_series);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar( toolbar );
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SeriesActivity.this, BowlerActivity.class));
finish();
}
});
我的问题是,当 .setNavigationOnClickListener 注册点击时,它会返回到之前的 activity 减去正确的投球手。当我进入 Series Activity 时,我将 leagueId 和 bowlerId 传递给它。当我回到 BowlerActivity 时,我没有传回任何东西,所以我得到以下信息:
投球手 B1 和 B2 属于不同的联赛。
我经历过几个不同的主题,例如这个how to override action bar back button in android?,并且我尝试了其中的几个不同建议。 None 其中对我有用。
如何将 leagueId 和 bowlerId 传回 BowlerActivity 以便在它启动时从数据库中筛选出正确的 Bowler 以显示在列表视图中。
我什至需要传回这些值吗?如有任何帮助,我们将不胜感激。
从您的 SeriesActivity 使用 startActivityForResult() 方法调用 BowlerActivity
例如:
Intent i = new Intent(SeriesActivity.this, BowlerActivity.class);
startActivityForResult(i, 1);
在您的 BowlerActivity 中,将您想要 return 的数据设置回 SeriesActivity。
如果您不想return返回,请不要设置。
For example: In BowlerActivity if you want to send back data:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
If you don't want to return data:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
现在在您的 SeriesActivity class 中为 onActivityResult() 方法编写以下代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
来源 =>
我正在使用以下代码实现工具栏中的后退按钮:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_series);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar( toolbar );
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SeriesActivity.this, BowlerActivity.class));
finish();
}
});
我的问题是,当 .setNavigationOnClickListener 注册点击时,它会返回到之前的 activity 减去正确的投球手。当我进入 Series Activity 时,我将 leagueId 和 bowlerId 传递给它。当我回到 BowlerActivity 时,我没有传回任何东西,所以我得到以下信息:
投球手 B1 和 B2 属于不同的联赛。
我经历过几个不同的主题,例如这个how to override action bar back button in android?,并且我尝试了其中的几个不同建议。 None 其中对我有用。
如何将 leagueId 和 bowlerId 传回 BowlerActivity 以便在它启动时从数据库中筛选出正确的 Bowler 以显示在列表视图中。
我什至需要传回这些值吗?如有任何帮助,我们将不胜感激。
从您的 SeriesActivity 使用 startActivityForResult() 方法调用 BowlerActivity
例如:
Intent i = new Intent(SeriesActivity.this, BowlerActivity.class);
startActivityForResult(i, 1);
在您的 BowlerActivity 中,将您想要 return 的数据设置回 SeriesActivity。 如果您不想return返回,请不要设置。
For example: In BowlerActivity if you want to send back data:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
If you don't want to return data:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
现在在您的 SeriesActivity class 中为 onActivityResult() 方法编写以下代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
来源 =>