我正在尝试将一个字符串和一个int类型数据从一个活动发送到另一个活动,但由于缺乏知识,我不知道该怎么做。 通过下面给出的特定编码,我只能发送任何一种数据类型。
搜索了很多,但未找到任何适合我的问题的答案。如果我问任何错误的plzz通知我,因为我是Android Dev的新手。
任何帮助都可能会受到赞赏。
这是我对这两项活动的java编码:
First.java
public class QM extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qm);
}
public void FLG(View view) {
// Do something in response to button
EditText mEditText= (EditText)findViewById(R.id.editText1);
String str = mEditText.getText().toString();
Intent intent = new Intent(this, Q1.class);
intent.putExtra("myExtra", str);
startActivity(intent);
finish();
}
}
Second.java
public class Q1 extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_q1);
Intent intent = getIntent();
if (intent.hasExtra("myExtra")){
TextView mText = (TextView)findViewById(R.id.textView1);
mText.setText("user name "+intent.getStringExtra("myExtra")+"!"); }
}
}
答案 0 :(得分:0)
只要你有不同的密钥,你可以发送2个额外的东西,甚至更多,所以在你的问题中,你需要2个额外的一个用于String,一个用于整数。
<强>样品:强>
<强>通过强>
Intent intent = new Intent(this, Q1.class);
intent.putExtra("myExtra", str);
intent.putExtra("myExtraInt", yourInt);
获取:强>
Intent intent = getIntent();
if (intent.hasExtra("myExtra") && intent.hasExtra("myExtraInt")){
TextView mText = (TextView)findViewById(R.id.textView1);
mText.setText("user name "+intent.getStringExtra("myExtra")+"!");
int extraInt = intent.getIntExtra(myExtraInt);
}
答案 1 :(得分:0)
我想给你一些信息。
想象一下Intent的附加功能是(理论上)无限大小的背包。只要每个数据都有一个唯一的名称(字符串),您就可以将某些类型的数据放入无限数字中。 在内部,它是一个将名称映射到值的表。
所以:是的,你可以将String和Int同时放入Intent的附加内容中。
String str = "Test";
int val = 2933;
Intent i = new Intent(MyActivity.this, NewActivity.class);
i.putExtra("MyStringExtraUniqueName", str);
i.putExtra("MyIntExtraUniqueName", val);
要检查它,请使用i.hasExtra(“MyStringExtraUniqueName”),并使用i.getExtra(“MyStringExtraUniqueName”)。
但如果您只使用getExtra,则会返回object
类型的数据。请记住将返回的值强制转换为适当的类型,或者对某些预定义的数据类型使用一种专门的getter方法。
有关可用的getter,请参阅此内容:http://developer.android.com/reference/android/content/Intent.html
答案 2 :(得分:0)
Bundle data = new Bundle();
data.putInt("intKey", 5);
data.putString("stringKey", "stackoverflow");
Intent i = new Intent(MyActivity.this, NewActivity.class);
i.putExtras(data);
//And in the second acitvity fetch this way
Bundle data = getIntent().putExtras(b);