如何将数据从两个不同的活动传递到另一个

How to pass data from two different activities to another

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

class1:

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);

            }
        });
    }

class2:

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);



            }
        });
    }

class3:

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 中没有任何变化。

您在这两种情况下都覆盖了分数值。如果其他逻辑将正常工作。

    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);
    }

从代码片段中我看到问题似乎是您首先在意图中检查 "firstdata" extra 将其设置为文本视图,然后检查 "seconddata" extra 并覆盖文本视图中的值。

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

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