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

标签 java android startactivityforresult

我有这个,让我们说“作业”(不知道如何翻译它,抱歉)为老师编写一个简单的应用程序,以便他们可以输入成绩和科目等。

我设置的 Activity 使用自定义适配器和 ListView 来显示学生姓名,每行的 和 处有 3 个按钮,供每个学生设置成绩。按钮为 3,因为学生有 3 次尝试通过的机会。按下按钮后, Activity 将显示(作为弹出窗口)以从键盘输入成绩并将其保存为按下的按钮的新文本。我还没有设法将该按钮文本设置为从该 Activity 传递的成绩,因为我无法在 onActivityResult 中检索该字符串。 我暂停了:

String s = extras.getString(key)

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

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

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

简单来说,过程应该是这样的: 在第一个 Activity 中,我单击自定义适配器创建的 ListView 的一行中的按钮以打开结果 Activity 。在第二个 Activity 中,我在 EditText 中写入一个数字,按下按钮后,我将其作为结果传递给 onActivityResult 返回到第一个 Activity 。我得到了正确的数字作为额外的数字,但在分配给新字符串后,该字符串保持为空。

我首先开始这样的 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 传递了正确的值,但在分配给新字符串后,它一直将其设置为 null。 我不知道我是否提供了足够的信息,但如果需要更多信息,请询问,我会尽力为您提供更多信息。

编辑: 这有效:

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

最佳答案

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

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

返回结果时。

关于java - extras.getString() 检索正​​确的值但分配 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57523021/

相关文章:

java - 将从文本文件读取的字符串拆分为二维字符数组

java - 通知 RecyclerView 中 Firestore 数据的更改

android - 刷机前自定义 Android ROM 应用程序数据

android - 通知监听器的 startActivityForResult

android - 从 ViewPager 返回 Activity 结果

java - 为什么 Java 中的 volatile 不更新变量的值?

java - 如何修复 firebase 注册身份验证?

android - 如何在考虑测试的情况下使用 Dagger 设计 Android 应用程序

android - 如何让 Android MediaPlayer() 在应用程序关闭时停止?

android - 如何暂停 Activity 直到其他 Activity 返回结果?