【问题标题】:How to pass data from two different activities to another如何将数据从两个不同的活动传递到另一个
【发布时间】:2016-09-24 12:18:03
【问题描述】:

我有三个不同的类,当单击 class1 中的 ImageButton 时,我希望 class3 中的 TextView 应更改为“50”。另一方面,当单击 class2 中的 ImageButton 时,我希望 class3 中的 TextView 应更改为“0”。

类1:

ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton);
    if (button1 != null) {
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent passdata_intent1 = new Intent(class1.this, class3.class);

                String data1 = "50";

                Bundle bundle1 = new Bundle();

                bundle1.putString("firstdata", data1);

                passdata_intent1.putExtras(bundle1);


                startActivity(passdata_intent1);

            }
        });
    }

类2:

ImageButton button1 = (ImageButton) this.findViewById(R.id.imageButton);
    if (button1 != null) {
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              Intent passdata_intent2 = new Intent(class2.this, class3.class);

                String data2 = "0";

                Bundle bundle2 = new Bundle();

                bundle2.putString("seconddata", data2);

                passdata_intent2.putExtras(bundle2);

                startActivity(passdata_intent2);



            }
        });
    }

类3:

TextView score = (TextView) findViewById(R.id.textViewscore);


        Bundle bundle1 = getIntent().getExtras();

        String data_1 = bundle1.getString("firstdata");

        score.setText(data_1);




        Bundle bundle2 = getIntent().getExtras();

        String data_2 = bundle2.getString("seconddata");

        score.setText(data_2);

所以我的问题是,当我启动应用程序并单击 class2 中的 ImageButton 时,class3 中的 TextView 会发生变化。但是当我点击 class1 中的ImageButton 时,class3 没有任何变化。

【问题讨论】:

  • 因为你设置了score.setText(); 两次。所以每次调用最后一个方法并且它没有在你的文本视图中显示第一个值数据

标签: android android-intent pass-data


【解决方案1】:

从代码的 sn-ps 我看到问题似乎是您首先在意图中检查“firstdata”额外,将其设置为文本视图,然后检查“seconddata”额外并覆盖中的值文本视图。

当您将 firstdata 传递给活动时,seconddata(如果未传递)应该为 null,因此您将分数文本设置为 null 并从中删除第一个数据值。

不需要为额外的用户使用 2 个不同的名称,以便将数据从 2 个不同的入口点传递到同一个文本视图。 为 class1 和 class2 使用“firstdata”额外名称来传递数据,它应该可以工作。

【讨论】:

    【解决方案2】:

    在这两种情况下,您都将覆盖分数值。 if else 逻辑可以正常工作。

        if(getIntent().hasExtras("firsdata")){
    
            Bundle bundle1 = getIntent().getExtras();
    
            String data_1 = bundle1.getString("firstdata");
    
            score.setText(data_1);
    
        } else{
    
            Bundle bundle2 = getIntent().getExtras();
    
            String data_2 = bundle2.getString("seconddata");
    
            score.setText(data_2);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-12
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多