0

我如何将 char1 从 onCreate 方法传递给另一个方法——在这种情况下,将它传递给 selectChar2?我可以将 char1 和 char2 设为全局吗?我不确定这样做的正确方法是什么。请帮忙!

private String char1,char2; // does this even do anything? I thought this would let me use char1 and char2 anywhere.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pick_char2);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String char1 = (String) extras.getString("char1"); //is the (String) necessary?

        TextView textView = (TextView) findViewById(R.id.header);

        textView.setText(char1+" vs "+"char2");

    }


}

public void selectChar2(View v) {
    Button btn = (Button)v;
    String char2 = btn.getText().toString();
    Intent intent = new Intent(PickChar2.this, DisplayMatchUp.class);
    Bundle extras = new Bundle();

    extras.putString("Character1",char1); //char1 here is null...how do I get the value from the method above?
    extras.putString("Character2", char2);

    intent.putExtras(extras);
    startActivity(intent);
4

4 回答 4

2

实际上,您已经声明并使用了两个单独的变量:

  1. 一个实例变量:char1
  2. 局部变量:char1

1 的范围是类实例(它可以在类内的任何非静态范围内访问)。2 的范围在定义它的块中。在这种情况下,只需不要创建局部变量,而是使用实例变量,

    char1 = (String) extras.getString("char1");
于 2013-06-27T20:54:13.867 回答
1

您已经将变量声明为全局变量,但后来您声明了一个同名的局部变量。将使用局部变量。要确保使用全局变量,请使用“this”关键字。

this.char2

指全局变量 char2

char2

指局部变量 char2

于 2013-06-27T21:00:19.487 回答
0

您可能应该将其公开,或者将其作为两种方法中的参数。

于 2013-06-27T20:54:26.727 回答
0

在程序的顶部,您正在创建一个全局变量char1...

private String char1,char2;

但是在该onCreate()方法中,您有以下行...

String char1 = (String) extras.getString("char1");

该行开头的字符串一词正在创建一个名为的局部变量,该变量与您在程序顶部创建char1的全局变量分开。char1

你需要删除它String只是这个......

char1 = (String) extras.getString("char1");

通过这样做,您现在将值分配给程序顶部的全局变量,因此可以在您希望的此类中的任何位置使用它。

于 2013-06-27T20:55:32.880 回答