这是我第一次活动中的代码:
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
答案 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而不是字符串