java - StartActivityForResult 不暂停主 Activity

标签 java android

我创建了一个对话框作为 Activity ,用户在其中选中三个单选按钮之一,结果返回到主 Activity 。我关注了answer on this SO question

我认为通过创建这个 MainAcitvity 会暂停并等待子 Activity 的结果。

private void getFinalFinish() {

    Intent intent_openDialog = new Intent(this, DaAAmountToFinish.class);
    // Start the SecondActivity
    Bundle bundle_PassToDialog = new Bundle();

    bundle_PassToDialog.putInt("EXTRA_SCORE_TO_SUBTRACT", scoreToSubtractFrom);
    bundle_PassToDialog.putString("EXTRA_RADIO_BUTTON", rb_selected.getText().toString());
    bundle_PassToDialog.putString("EXTRA_THROWING", whosThrowing);        
    intent_openDialog.putExtras(bundle_PassToDialog);
    startActivityForResult(intent_openDialog, DIALOG_REQUEST_CODE);


}

此代码在需要时执行,我可以看到它,因为它会在我点击后退按钮时显示(我的主要 Activity 继续到它打开另一个我只想在从 Activity 中获得结果后打开的 Activity 作为对话)。

关于 Activity 结果代码...

 // This method is called when the dialog activity finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Check that it is the SecondActivity with an OK result
    if (requestCode == DIALOG_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {


            Bundle extras = data.getExtras();
            // Get String data from Intent
            int darts_to_minus = extras.getInt("DARTS_TO_MINUS");
            boolean addTooScore = extras.getBoolean("ADD_TO_SCORE");
            int dartsToSubtractFromFinish = extras.getInt("DARTS_TO_SUBTRACT_FROM_FINISH");

            setMatchAVG(darts_to_minus, whosThrowing, addTooScore);


            if (newBestLeg) {

                if (whosThrowing.equalsIgnoreCase("Player 1")) {
                    tv_bestLeg.setText(getString(R.string.tv_BestLeg, String.valueOf(tempNumOfDartsThrownP1 + dartsToSubtractFromFinish))); //Subtract 2 off best leg only took 1 dart to finish
                } else {
                    tv_bestLegP2.setText(getString(R.string.tv_BestLeg, String.valueOf(tempNumOfDartsThrownP2 + dartsToSubtractFromFinish)));
                }
            }
        }
    }
}

这是为什么?

最佳答案

My main activity continues to the point where it opens another activity that I only want to open after I get the result from activity as a dialog

这是“按预期工作”:

  • 一旦一个方法开始,它将继续直到它完成(如果它不会花费太长时间而导致 ANR)。

  • 执行 Activity 方法的默认线程是主线程。具体来说,如果另一个 Activity 启动,它的方法也会在主线程上执行。

  • 因此,新 Activity 中的第一个方法只能在启动新 Activity 的方法完成后执行。

  • 因此,您应该将所有必须等待新 Activity 结果的部分移动到应用的另一部分。您覆盖 onActivityResult() 并根据结果触发这些部分的执行。

关于java - StartActivityForResult 不暂停主 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54675296/

相关文章:

android - 在应用程序被销毁后管理服务状态

java - Spring 启动 JPA : How do I connect multiple databases?

java - JUnit 测试方向

java - 如何解析 Java 中的命令行参数?

android - 如何在android KeyStore中生成KeyPair,受自定义密码保护

android - 从 fragment 到 Activity 循环的 Intent ?

java - LocateRegistry.createRegistry() 不能使应用程序保持 Activity 状态

java - 列表的列表,在父列表上有谓词过滤器,在子列表上有另一个谓词过滤器

android - 为什么我的 eclipse R 文件被删除了?

android - 在代号一中,我可以标记一个 android 应用程序图标吗?