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

使用 onActivityResult();问题以前没有发生过

万喜
2023-03-14

我正在制作的应用程序需要将数据从活动2转移到前一个活动1。所以我用的是startActivityForResult(),然后是on activityresult();

直到昨天,它一直运行良好,当我按下按钮从活动1转到活动2时,我的应用程序会滞后并崩溃。

如果我出于某种原因注释掉活动1中的ActivityResult(),它会再次工作。但是这样数据就不会被传递,我需要将活动2的listview中的数据传输到活动1中的text View。

我不相信我真的改变了我的代码,所以我对为什么会发生这种情况感到困惑。如果有人可以帮助我检查我的代码,那就太好了。谢谢:)

崩溃日志:

E/AndroidRuntime:致命异常:主进程:com.example.jiowhere,PID:5667 Java . lang . nullpointerexception:尝试对com . example . jio where . listview adaptor . filter(listview adaptor . Java:119)处的空对象引用调用虚拟方法“Java . lang . string Java . lang . string . Java:176”

onCreate()方法外部的活动1

    @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 == 1) {
            if (resultCode == RESULT_OK) {
                // Get String data from Intent
                String returnString = data.getStringExtra("keyName");

                // Set text view with string
                TextView filterView = (TextView) findViewById(R.id.filterByTags);
                filterView.setText(returnString);
            }
        }
    }



    @Override
    public void onClick(View v) {

        if (v == tagButton) {
            Intent intent = new Intent(this, TagSystemActivity.class);
            startActivityForResult(intent, 1);

            //crashes app
            onActivityResult(1, RESULT_OK, intent);
        }

    }

OnCreate()方法内的Activity2

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                String selectedFromList = (String) (listView.getItemAtPosition(position));
                testing.setText(selectedFromList);


                Intent intent = new Intent();
                intent.putExtra("keyName", selectedFromList);
                setResult(RESULT_OK, intent);
                finish();

            }});

共有3个答案

谷梁宜
2023-03-14

您不应该手动调用onActivityResult(…)。

startActivityForResult(intent, 1);

//crashes app
onActivityResult(1, RESULT_OK, intent);

删除此对 onActivityResult(...) 的调用;从 onClick().

当您发布来自另一个活动的结果时,onActivityResult方法将自动被调用。

文建业
2023-03-14

字符串返回String=data.getStringExtra("keyName");

在这一行中,您需要将“keyName”替换为您的密钥。我认为空对象引用了keyName。

秦安怡
2023-03-14

删除下线,

        onActivityResult(1, RESULT_OK, intent);

从这里,

@Override
public void onClick(View v) {
    if (v == tagButton) {
        Intent intent = new Intent(this, TagSystemActivity.class);
        startActivityForResult(intent, 1);

        //crashes app
        onActivityResult(1, RESULT_OK, intent);
    }
}

此行调用具有空对象的活动结果,然后活动 2 在活动 1 上发送结果。您永远不需要手动调用该方法。onActivityResult 方法在从某个地方获得结果后自动调用(在你的例子中,从 activity2)。

 类似资料:
  • 构建指纹:'Google/Sailfish/Sailfish:8.0.0/OPR3.170623.008/4294783:User/Release-Keys'修订:'0'ABI:'ARM64'pid:10010,tid:10046,name:ControllerMesse>>>>com.xxxxxx<< 有人能给我指个正确的方向吗。

  • 不确定是什么问题。。下面的代码应该可以正常工作。。 我也没有例外,但Dragable 1根本不会动。。我用另一种方法试过,但没有成功。。

  • Chorm浏览器打开控制器vue项目就报 关闭就不会有这个错, 大佬们 这怎么弄

  • 因此,我使用一个gps类来打开gps,这里有一个方法允许我们发送到,但是由于在AndroidX上不推荐,并且仍然可用,android团队建议我们下一个方法: 我如何使用新API来处理同样的事情?

  • 问题内容: 这是我的代码。我正在尝试使用箭头键使球移动。当我运行上述程序时 ,不显示球 ( 如果我将坐标更改为显示0,30球), 并且事件未触发,球既不移动也不跳跃 ? 问题答案:

  • 我有以下代码,其中我尝试将范围的字符串表示转换为数字列表。例如,如果输入为“0-0,3-5,7-10”,则预期输出为“0,3,4,5,7,8,9,10”。但是,我在以下位置出错: 它说没有足够的值来解压。我的推理是,应该具有的形式,所以如果我将其拆分为,我应该得到两个值。有什么问题吗?