【问题标题】:Passing The Proper Information To Previous Activity When Back Button Pressed按下后退按钮时将正确的信息传递给上一个活动
【发布时间】:2018-06-26 13:06:58
【问题描述】:

我正在使用下面的代码来实现工具栏中的后退按钮:

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 注册点击时,它会返回到前一个活动减去正确的保龄球。当我参加系列活动时,我将 LeagueId 和 BowlerId 传递给它。当我回到 BowlerActivity 时,我没有传回任何东西,所以我得到以下信息:

投球手 B1 和 B2 属于不同的联盟。

我已经经历了几个不同的线程,比如how to override action bar back button in android?,我尝试了其中的几个不同的建议。它们都不适合我。

如何将 LeagueId 和 BowlerId 传递回 BowlerActivity,以便在它启动时从数据库中过滤出正确的 Bowler 以显示在列表视图中。

我什至需要将这些值传回吗?任何帮助将不胜感激。

【问题讨论】:

标签: javascript android sqlite android-studio back-button


【解决方案1】:

从您的 SeriesActivity 中使用 startActivityForResult() 方法调用 BowlerActivity

例如:

Intent i = new Intent(SeriesActivity.this, BowlerActivity.class);
startActivityForResult(i, 1);

在您的 BowlerActivity 中设置您想要返回给 SeriesActivity 的数据。 如果你不想返回,不要设置任何。

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 类中为 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
        }
    }
}

来源 => https://stackoverflow.com/a/10407371/9956766

【讨论】:

  • 对代码稍作修改,使用您在上面提供的链接,我就能解决这个问题。感谢您的帮助!
猜你喜欢
  • 2021-11-28
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多