0

如何将 textview 的值从一个活动传递到另一个活动?

我的游戏得分显示在 textview 上,并且在它增加后它将打算进行下一个活动。但是第一个活动的分数值没有显示在第二个活动的文本视图上。

这是我第一次活动的代码

final TextView score2 = (TextView) findViewById(R.id.tvscore2);
    Button page1 = (Button) findViewById(R.id.btnDog);
    page1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            EditText etDog1 = (EditText) findViewById(R.id.etDog);
            String Dog = etDog1.getText().toString();

            if (Dog.equalsIgnoreCase("dog")) {
                global.score += 10;


                score2.setText(String.valueOf(global.score));
                Toast.makeText(getApplicationContext(), "Correct",
                        Toast.LENGTH_SHORT).show();
                Intent myIntent = new Intent(view.getContext(),
                        sound1_3pig.class);

                startActivityForResult(myIntent, 0);

            } else if (global.score <= 0) {
                global.score += 0;
                score2.setText(String.valueOf(global.score));
                Toast.makeText(getApplicationContext(), "Wrong",
                        Toast.LENGTH_SHORT).show();
            } else {

                global.score -= 5;
                score2.setText(String.valueOf(global.score));
                Toast.makeText(getApplicationContext(), "Wrong",
                        Toast.LENGTH_SHORT).show();
            }
        }

    });

}

我想将分数活动 1 的结果显示到第二个活动的 textview

这是我的第二个活动

final TextView score1 = (TextView) findViewById(R.id.tvscore1);
    Button page1 = (Button) findViewById(R.id.btnCat);
    page1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            EditText etCat = (EditText) findViewById(R.id.etCat);
            String Cat = etCat.getText().toString();
            if (Cat.equalsIgnoreCase("cat")) {

                global.score += 10;
                score2.setText(String.valueOf(global.score));

                Toast.makeText(getApplicationContext(), "Correct",
                        Toast.LENGTH_SHORT).show();

                Intent myIntent = new Intent(view.getContext(),
                        sound1_3pig.class);
                startActivityForResult(myIntent, 0);
                finish();

            } else if (global.score <= 0) {
                global.score += 0;
                score2.setText(String.valueOf(global.score));
                Toast.makeText(getApplicationContext(), "Wrong",
                        Toast.LENGTH_SHORT).show();

            } else {
                global.score -= 5;
                score2.setText(String.valueOf(global.score));
                Toast.makeText(getApplicationContext(), "Wrong",
                        Toast.LENGTH_SHORT).show();
            }

        }
    });

}
4

3 回答 3

1

当您的第二个活动膨胀新布局时,您需要将您的值从第一个活动显式传递给第二个活动,并使用此值初始化它的 TextView。

活动一:

void goToSecondActivity() {
    String value = mTextView.getText();
    Intent in = new Intent(getActivity(), YourSecondClass.class);
    in.putExtra("score", value);
    startActivity(in);
}

活动二:

void onCreate(Bundle bundle) {
    ...
    String score = getIntent().getStringExtra("score", "No score.");
    mTextView.setText(score);
}
于 2013-02-06T14:38:21.933 回答
1

使用这样的东西。

活动一:

Intent i = new Intent(getActivity(), Activity2.class);
i.putExtra("Score", 20);

startActivity(i);

活动二:

Intent i = getIntent();
int score = i.getIntExtra("Score", 0);
于 2013-02-06T14:35:45.213 回答
0

我的回答也与其他人的建议相似。试试这个,我在你的代码中添加了一些额外的语句(我假设你想将变量的值发送score到下一个活动,你可以用你想发送的变量替换它):

第一项活动:

score2.setText(String.valueOf(score));
Toast.makeText(getApplicationContext(), "Correct",
             Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(this,
                    sound1_3pig.class);
myIntent.putExtra("Score", global.score);
startActivityForResult(myIntent, 0);

第二个活动:

把它放在第二个活动的 onCreate() 方法中:

Intent intent = getIntent();
int score = intent.getIntExtra("Score",0);

所以现在你将在第二个活动中从上一个活动中获得分数的值。然后您可以通过调用在要显示它的 textView 中设置它

textView.setText(score);
于 2013-02-06T16:01:27.287 回答