当前位置: 首页 > 知识库问答 >
问题:

resultCode 在按钮按下和 finish() 后具有值 -1,但在按下后退按钮后值为 -1,即使在相应的函数中使用相同的代码也是如此

翟凯
2023-03-14

我有一个RecyclerView,它的Adapter.class在一个单独的文件中,但是适配器中的onClickListener可以通过start ActivityForResult启动第二个活动。当我有用户输入时,我希望应用程序将数据发送回第一个活动,这仅在用户使用我提供的按钮时才有效,但当他使用后键时则无效,即使它在相应的功能中运行相同的代码。

我将完全相同的代码从按钮复制到onBackPressed,onPause和onDestroy,但在Destroy上运行得太晚,另外两个导致resultCode为0,数据在活动1中为空。我已将 setResult 及其参数更改为我找到的所有可能的变体(RESULT_OK Intent、Activity.RESULT_OK Intent 和 RESULT_OK)。

back = new Intent(this, MainActivity.class);

btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                back.putExtra("ANSWER", answer.getText().toString());
                back.putExtra("QUESTION_ID", questionId);
                setResult(RESULT_OK, back);
                finish();
            }
         });
@Override
     public void onBackPressed() {
        super.onBackPressed();
        back.putExtra("ANSWER", answer.getText().toString());
        back.putExtra("QUESTION_ID", questionId);
        setResult(RESULT_OK, back);
     }
@Override
    protected void onPause() {
        super.onPause();
        back.putExtra("ANSWER", answer.getText().toString());
        back.putExtra("QUESTION_ID", questionId);
        setResult(RESULT_OK, back);
    }

如果我使用 Button,它会传递数据并将 resultCode 设置为 -1,但是当我不使用按钮但后按钮 resultCode = 0 并且 ActivityResult 上的数据为 null 时。我不知道是什么造成了这种差异

共有1个答案

锺离赤岩
2023-03-14

尝试在超类调用的onBackPress之前设置结果:

     @Override
     public void onBackPressed() {
        back.putExtra("ANSWER", answer.getText().toString());
        back.putExtra("QUESTION_ID", questionId);
        setResult(RESULT_OK, back);
        super.onBackPressed();
     }
 类似资料:
  • 这显然是我在这里的第一篇文章...好吧,我的问题如下:@android:我有一个用户输入文本的文本编辑器,我通过getText()获取文本,一切正常,但当我按下后退按钮,再次返回到文本编辑器的相同活动并尝试再次获取文本时,它返回空字符串"",尽管文本编辑器视图中显示了不同的文本。会不会是文本编辑仍然与旧的关闭活动“相关或对应”?有什么想法吗? 然后在 AsynckTask 中,我将文本发送到发送,

  • 这里发生的情况是,一旦按下后退按钮,活动就会重新加载,并再次按下后退按钮退出应用程序。我希望它是一次性的,即第一次 我尝试了很多方法,比如尝试onBackPressed方法,但都没有用。我想解决这个问题,当用户按下后退按钮时,他应该退出应用程序。同样的情况也发生在其他活动中,其中我有一个登录页面,一旦用户来到登录页面,如果他希望退出应用程序并按下后退按钮,那么在我的情况下,登录页面再次被重新加载,

  • 我对libGDX有一个问题,当我用后退按钮退出后恢复应用程序时,只有一个白色屏幕。 实际应用运行,接受触摸输入,播放声音,但屏幕只是白色。 我读过保持对纹理的静态引用可能会导致这个问题,但我没有这样做。 下面是我的资产代码如何工作的简化版本。 在按下后退按钮后返回应用程序时,重新创建AssetManager,重新打开SplashScreen(为白色),并更新AssetManager直到重新加载所有

  • 我正在使用android导航组件库。我用导航图设置了两个片段。我想在我的片段内按下后退按钮时做一些额外的动作。 我使用这段代码来处理工具栏上的按钮点击,但我也想处理后退按钮按下。我该怎么做?

  • 我正在编写一个使用ChessClock类的游戏应用程序。这两个运动员每人都有一个钟。时钟每十分之一秒向自己发送一个信息流,如果运行,则减少剩余时间。当时间到期时,时钟会调用父视图组中的一个方法,该方法会停止时钟并设置一个标志,该标志会导致忽略进一步的触摸事件,从而用户无法再移动工件。我正在用kotlin写作,但我认为java程序员也会明白这一点: 这可以正常工作,但是如果用户按下后退按钮然后开始一

  • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检