如何将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);
答案 0 :(得分:2)
实际上,您已声明并使用了两个单独的变量:
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");
通过这样做,您现在可以将值分配给程序顶部的全局变量,因此可以在此类的任何位置使用它。