我想使用意图将多个输入字段从一个活动发送到主要活动。但此后我的应用程序无法运行。
我接受输入的代码是:-
子活动中的代码以发送数据
ivHappy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("name",etName.getText());
intent.putExtra("number",etNumber.getText());
intent.putExtra("website",etWebsite.getText());
intent.putExtra("loc",etLocation.getText());
intent.putExtra("smileyCode",1);
setResult(RESULT_OK,intent);
Activity2.this.finish();
}
});
接收数据的代码
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==ACTIVITY2){
if(resultCode==RESULT_OK){
int x = Integer.parseInt(data.getStringExtra("smileyCode"));
if(x==1){
ivPic.setImageResource(R.drawable.happy);
}
if(x==2){
ivPic.setImageResource(R.drawable.neutral);
}
if(x==3){
ivPic.setImageResource(R.drawable.sad);
}
number = data.getStringExtra("number");
name = data.getStringExtra("name");
website = data.getStringExtra("website");
location = data.getStringExtra("loc");
ivPic.setVisibility(View.VISIBLE);
ivDial.setVisibility(View.VISIBLE);
ivWeb.setVisibility(View.VISIBLE);
ivLoc.setVisibility(View.VISIBLE);
}
但这不起作用。那么我应该如何将多个输入发送回mainActivity?
答案 0 :(得分:1)
在获取文本的孩子活动中,应将其转换为字符串。像这样的theName.getText()。toString()
答案 1 :(得分:0)
尝试以下操作,因为使用String来发送和接收数据总是更好,因此会发生转换错误,但是通过这种方式,您必须使onActivityResult
方法足够智能,以知道这是否是String或Int或Float等。目前尚无解决方法,但我认为SafeArgs很快会解决此问题(我希望)
在设置Extra时将所有内容保留为Int。
intent.putExtra("name",etName.getText());
intent.putExtra("number",etNumber.getText());
intent.putExtra("website",etWebsite.getText());
intent.putExtra("loc",etLocation.getText());
intent.putExtra("smileyCode",Integer.toString(1));
在将Extra转换字符串提取为给定的所需类型时。
intent.getExtra("name");
intent.getExtra("number");
intent.getExtra("website");
intent.getExtra("loc");
Integer.valueOf(intent.getExtra("smileyCode"));