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

Android:setResult不将结果返回给父活动

沙小白
2023-03-14

我已使用 startActivityForResult 从父活动启动了子活动。在子活动中执行所需功能后,我正在使用setResult设置结果。但是我没有从孩子活动中获得父母活动的结果。

这是我的代码。

下面是我如何从父活动中调用子活动。

 Intent i = new Intent(MainActivity.this, Child.class);
    i.putExtra("ID", intID);
    i.putExtra("aID", aID);
    i.putExtra("myMsg", myMsg);
    startActivityForResult(i, 1);

这是我如何设置子活动的结果。

 @Override
    public void onBackPressed() {
        super.onBackPressed();
     Intent resultInt = new Intent();
     resultInt.putExtra("Result", "Done");
     setResult(Activity.RESULT_OK, resultInt);
     finish();
}

这是我的onActivityResult

   @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1) {

        if (resultCode == Activity.RESULT_OK) {
            if(data!=null) {
                Toast.makeText(MainActivity.this, "Data received", Toast.LENGTH_SHORT).show();
            }
        }
    }

}

这里是当我检查resultCode==活动时。RESULT_OK给出false。我还检查了在这个if条件之外传递的意图及其返回null。

 <activity
        android:name=".MainActivity"
        android:label="Main"
        android:parentActivityName=".MainPage"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="org.mydomain.mydomain.MainPage" />
    </activity>
    <activity
        android:name=".Child"
        android:label="Child"
        android:parentActivityName=".MainActivity"
        android:theme="@style/AppTheme1">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="org.mydomain.mydomain.MainActivity" />
    </activity>

有人能帮我解决这个问题吗。

共有3个答案

仉磊
2023-03-14

我想你漏掉了一些编码部分。

>

  • 您的代码排列看起来不正确。

    您必须创建一个变量来接收从childActivity传递的数据。

      @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
              if (requestCode == 1) {
                 String ReceiveData = data.getStringExtra("Result"); // you have to receiveData
                    if(ReceiveData !=null) {
                        Toast.makeText(MainActivity.this, "Data received", Toast.LENGTH_SHORT).show();
                    }
                }
            }
    
        }
    

  • 万涵亮
    2023-03-14

    尝试其他意图构造函数。这样地:

        Intent resultIntent = new Intent(RESULT_NAME, Uri.parse("data"));
        setResult(RESULT_OK, resultIntent);
        finish();
    

    原因是它可能在寻找< code>Uri类型的数据。看看这个。

    颜祖鹤
    2023-03-14

    修改您的onBackPree()方法

    @Override
    public void onBackPressed() {
    
     Intent resultInt = new Intent();
     resultInt.putExtra("Result", "Done");
     setResult(Activity.RESULT_OK, resultInt);
     super.onBackPressed();
    } 
    

    原因:在将结果发送到父活动之前,Backpress操作执行了他的任务......

     类似资料:
    • 我有第一活动,它通过意图调用第二活动 在SecondActivity完成后,我希望SecondActivity向FirstActivity发送一些变量。然后调用finsih(),它将返回到第一个活动。如何使SecondActivity发送变量并在FirstActivity中获得结果?

    • 我有一个简单的代码,可以从第14列开始将转置的范围复制到另一张表的最后一行 它按原样返回零结果。如果我将destrow从公式更改为simple 2(这是现在最后一个空行),则效果很好。为什么不返回目标工作表中的最后一行索引?

    • 我正在尝试处理新的AndroidLollipopMediaProjection API。 我发现(至少在我的股票三星Galaxy S4 jfltexx上),当我开始意图获取捕获屏幕的权限()时,除非我在前面的尝试中选中了“不要再次询问”,否则在中不会有结果... 和结果处理: 权限对话框显示得很好,但是我的活动被隐藏了,它永远不会转到。 知道出什么问题了吗?

    • 虽然运行与SQL查询相同的查询并获取结果,但在ifCurrent中未获取任何结果。 我是否传递了错误的参数? 这就是在学校里通过的

    • 我在用户和任务之间有一对多的关系(一个用户有很多任务)。 我在数据库中插入我的数据,其中每个任务都与用户ID有一个外键关联。在JPA中有没有可能本质上说: 这是我的简单回购

    • 问题内容: 我有以下活动: 并进行以下JUnit测试: 我如何确保单击按钮设置正确的结果(调用),该结果将返回到任何以此为起始的活动? 问题答案: 使用问题中的当前Activity实现,即,通过单击ChildActivity中的按钮设置结果,然后立即销毁该活动,在ChildActivityTest中我们无法做很多测试结果相关的东西。 相关问题测试onActivityResult()的答案显示了如何