getIntent.getExtras.getString()中的null值

时间:2012-01-11 16:09:16

标签: android android-intent

这是我第一次活动中的代码:

Intent i = new Intent(this, OtherScreen.class);
    i.putExtra("id1", "first");
    i.putExtra("id2", "second");
    startActivity(i);

其中first,second是我想要传递的值。 在我的另一堂课上,我有这个:

Intent i = getIntent();
        Bundle extras = i.getExtras();
        String result = extras.getString("id1");
        System.out.println("yeah"+result);

但是在我运行之后,我的结果是null。你能帮助我吗? 如果我以这种方式编写getString,我会收到语法错误。

String result = extras.getString(id1); //id1 cannot be resolved to a variable
String result = extras.getString("id1","default value"); // remove argument

7 个答案:

答案 0 :(得分:8)

Intent i = new Intent(yourcurrentactivity.this, OtherScreen.class);

i.putExtra("id1", "first");
i.putExtra("id2", "second");
startActivity(i);

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String result = extras.getString("id1");                
    System.out.println("yeah"+result);
}

答案 1 :(得分:3)

或者为了更准确,您可以使用 if(getIntent.hasExtras("id11")' before actually getting extras from the bundle and do some action if its null

答案 2 :(得分:1)

尝试:

getIntent().getStringExtra("id11");

当然最好先检查它是否甚至还有额外的费用。

价:

http://developer.android.com/reference/android/content/Intent.html#getStringExtra(java.lang.String

答案 3 :(得分:1)

我在项目中遇到了同样的问题。

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

我已将editText.getText()更改为String文本。

String text = editText.getText();
intent.putExtra("key",text);

那解决了我的问题。似乎是API问题。

答案 4 :(得分:0)

您可以尝试:String result = extras.get("id1");

答案 5 :(得分:0)

我也遇到了空值问题。 @ YuDroid建议使用if (getIntent.hasExtras("id11")是一个好主意。不过,我在阅读Bundle documentation时发现的另一项安全检查是

getString(String key, String defaultValue)

这样,如果字符串不存在,您可以为其提供默认值,而不是返回null。

所以这里是使用默认字符串值修改@ AprilSmith的答案。

Intent i = new Intent(yourcurrentactivity.this, OtherScreen.class);

i.putExtra("id1", "first");
i.putExtra("id2", "second");
startActivity(i);

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String result = extras.getString("id1", "myDefaultString"); // This line modified
    System.out.println("yeah"+result);
}

答案 6 :(得分:0)

如果有人仍有此问题,那么解决方案

您在第一个活动中传递的数据类型在接收端应该相同。

'Intent myIntent = new Intent(D1Activity.this, D2Activity.class);'
        'myIntent.putExtra("dval", dval);'
       ' D1Activity.this.startActivity(myIntent);'
D2Activity中的

Bundle extras = getIntent().getExtras();
    if (extras != null) {;
        edval = extras.getInt ( "dval" );
    }

这里extras.getString()不起作用,因为我们传递的是Int而不是字符串