Java 如何在方法之外使用变量
如何将char1从onCreate方法传递到另一个方法中——在本例中,将其传递到selectChar2中?我能把char1和char2做成全球的还是什么?我不知道该怎么做。请帮忙Java 如何在方法之外使用变量,java,android,Java,Android,如何将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 s
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);
实际上,您已经声明并使用了两个独立的变量:
char1 = (String) extras.getString("char1");
实际上,您已经声明并使用了两个独立的变量:
char1 = (String) extras.getString("char1");
您可能应该将其公开,或将其作为两种方法中的参数。您可能应该将其公开,或将其作为两种方法中的参数。在程序顶部,您正在创建一个全局变量
char1
private String char1,char2;
但是在onCreate()
方法中,您有以下行
String char1 = (String) extras.getString("char1");
行首的单词字符串正在创建一个名为char1
的局部变量,该变量与在程序顶部创建的全局变量char1
相分离
您需要删除字符串
,这样就简单了
char1 = (String) extras.getString("char1");
通过这样做,您现在将把值分配给程序顶部的全局变量,从而可以在该类中任意位置使用它。在程序顶部,您正在创建一个全局变量
char1
private String char1,char2;
但是在onCreate()
方法中,您有以下行
String char1 = (String) extras.getString("char1");
行首的单词字符串正在创建一个名为char1
的局部变量,该变量与在程序顶部创建的全局变量char1
相分离
您需要删除字符串
,这样就简单了
char1 = (String) extras.getString("char1");
通过执行此操作,您现在将把值分配给程序顶部的全局变量,从而可以在该类中任意位置使用它。您已经将变量声明为全局变量,但后来声明了具有相同名称的局部变量。将改用局部变量。要确保使用全局变量,请使用“this”关键字 指全局变量char2
char2
引用局部变量char2您已经将变量声明为全局变量,但后来您使用相同的名称声明了局部变量。将改用局部变量。要确保使用全局变量,请使用“this”关键字
char2
指全局变量char2
char2
引用局部变量char2char1&char2已经是全局变量,这意味着它们在类的任何部分中都可用于引用目的,静态方法除外将它们公开以供使用simplicity@MocialovBoris从技术上讲,
char1
和char2
是成员变量。Java没有真正的全局变量。但是,您的要点仍然正确:它们在onCreate()
和selectChar2()
方法中都可用。不需要(String)
,因为getString()
返回一个字符串。我强烈建议您熟悉提供此类信息的API文档。@MonadNewb我应该更加小心地使用诸如:实例、全局、成员、字段变量等术语。始终交替使用它们。我相信更多的是语言特定的术语,而不是理论上的术语,cschar1和char2已经是全局的,这意味着它们在类的任何部分都可以用于引用目的,静态方法除外,将它们公开以供参考simplicity@MocialovBoris从技术上讲,char1
和char2
是成员变量。Java没有真正的全局变量。但是,您的要点仍然正确:它们在onCreate()
和selectChar2()
方法中都可用。不需要(String)
,因为getString()
返回一个字符串。我强烈建议您熟悉提供此类信息的API文档。@MonadNewb我应该更加小心地使用诸如:实例、全局、成员、字段变量等术语。始终交替使用它们。我相信这是更具体的语言术语,而不是理论上的csso,只是为了确保我理解正确。我实际上做的是用局部变量覆盖实例变量?顺便说一句,什么是实例变量?@user2498691您可能想尝试一些Java教程。实例变量是拥有的,或者与类实例关联。我不会说你写得太多了。这意味着只有一个值,而你改变了它。实际上有两个完全不同的变量。他们外表看起来有相同的名字,但是你必须考虑范围。所以,只是为了确保我理解正确。我实际上做的是用局部变量覆盖实例变量?顺便说一句,什么是实例变量?@user2498691您可能想尝试一些Java教程。实例变量是拥有的,或者与类实例关联。我不会说你写得太多了。这意味着只有一个值,而你改变了它。实际上有两个完全不同的变量。它们向外看起来有相同的名称,但是你也必须考虑范围。(字符串)部分做什么?在这种情况下,什么也没有。这并不完全正确,但出于学习目的,(字符串)
char2