如何将多个数据字符串发送回MainActivity?

时间:2018-12-30 03:10:13

标签: java android android-intent

我想使用意图将多个输入字段从一个活动发送到主要活动。但此后我的应用程序无法运行。

我接受输入的代码是:-

子活动中的代码以发送数据

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?

2 个答案:

答案 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"));