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

时间:2016-09-24 12:18:03

标签: android android-intent pass-data

我有三个不同的类,当点击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);

            }
        });
    }

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



            }
        });
    }

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

2 个答案:

答案 0 :(得分:0)

在这两种情况下,你都会覆盖得分值。如果没有逻辑可以正常工作。

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

答案 1 :(得分:0)

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

当你将firstdata传递给activity时,seconddata(如果没有传递)应为null,因此你将得分文本设置为null并从中删除第一个数据值。

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