如何在方法之外使用变量

时间:2013-06-27 20:51:31

标签: java android

如何将onCreate方法中的char1传递给另一个方法 - 在这种情况下,将其传递给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 个答案:

答案 0 :(得分:2)

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

  1. 实例变量:char1
  2. 一个局部变量:char1
  3. 1作用于类实例(它可以在类中的任何非静态作用域中访问)。 2的范围限定在定义它的块中。在这种情况下,只是不创建局部变量,并使用实例变量

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

答案 1 :(得分:1)

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

this.char2

指的是全局变量char2

char2

指的是局部变量char2

答案 2 :(得分:0)

你应该把它公之于众,或者把它作为两种方法的参数。

答案 3 :(得分:0)

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

private String char1,char2;

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

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

该行开头的 String 一词正在创建一个名为char1 Local 变量,该变量与全局变量char1分开。你正在创建程序的顶部。

您需要删除String才能成为这个......

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

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