猿问

extras.getString() 检索正​​确的值但分配 null

我有这个,让我们说“家庭作业”(不知道怎么翻译,抱歉)主要是为老师编写简单的应用程序,这样他们就可以放成绩和科目等。


我设置了使用自定义适配器和列表视图的活动,以显示学生姓名,每行和每行都有 3 个按钮,供每个学生设置成绩。按钮是 3,因为学生有 3 次尝试通过。按下按钮后,活动将显示(作为弹出窗口)以从键盘输入成绩并将其另存为按下的按钮的新文本。我还不知道如何将该按钮文本设置为从该活动传递的成绩,因为我不能在 onActivityResult 中检索该字符串。我暂停了:


String s = extras.getString(key)

为了检查我用 putExtra() 设置的那个键找到了什么值,在我的应用程序进入该步骤后,我看到:


s: null extras: Bundle[{key=4}]

就在我之前提到的那行代码之后,4 是我在 EditText 中输入的值,以传递回第一个活动。即使我看到正确的值从第二个活动传递到第一个活动,我也无法将它分配给我在 onActivityResult 中创建的新字符串。


所以用更少的话来说,过程应该是这样的:在第一个活动中,我单击由自定义适配器创建的列表视图的一行中的按钮以打开结果活动。在第二个活动中,我在 EditText 中写了一个数字,在按下按钮后,我将它作为结果传递给 onActivityResult 返回到第一个活动。我得到了额外的正确数字,但在分配给新字符串后,字符串保持为空。


1st 我开始这样的活动:


Intent intent = new Intent(Activity1.this, Activity2.class);

                startActivityForResult(intent, 1);

然后我像这样从 EditText 传递额外的 onClick:


EditText editText = findViewById(R.id.edit_text);


Intent intent = new Intent();

intent.putExtra("key", editText.getText());

setResult(RESULT_OK, intent);

finish();

然后我回到第一个活动来做这个:


@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == 1){

        if(resultCode == RESULT_OK){

            Bundle extras = data.getExtras();

            String s = extras.getString("key");  //1st Pasue

            Log.e("onactivityresult string", (String) s); //2nd Pause


        }

    }

}

第一次暂停:


Bundle[mParcelledData.dataSize=40]

跨步,第二个暂停:


Bundle[{key=4}]

s = null

所以回到第一个活动,在 onActivityResult 中,我想我可以看到在第二个活动中从 EditText 传递了正确的值,但是在分配给新字符串之后,它一直将其设置为 null。我不知道我是否提供了足够的信息,但如果想要更多信息,请询问,我会尽力为您提供更多信息。


编辑:这有效:


intent.putExtra("key", editText.getText().toString());


慕桂英4014372
浏览 94回答 1
1回答

墨色风雨

EditText.getText()返回 an Editable,而不是直接返回 a String。使用intent.putExtra("key", editText.getText().toString());返回结果时。
随时随地看视频慕课网APP

相关分类

Java
我要回答