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

extras.getString() retrieves right value but assigns null

我有这个,让我们说 "homework"(不知道怎么翻译,抱歉)主要是为教师编写简单的应用程序,这样他们就可以输入成绩和科目等。

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

String s = extras.getString(key)

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

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

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

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

1st 我开始 activity 是这样的:

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();

然后我回到第一个 activity 做这个:

@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

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

编辑: 这有效:

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

EditText.getText() returns 一个 Editable,而不是直接 String。使用

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

返回结果时。