我想知道如何从一个空间“分享”到另一个空白。我有两个空位:一个叫做“Setup”,另一个叫做“NextQuestionAnswer”。我在“设置”中有一个变量,我需要从“NextQuestionAnswer”无效访问它。我见过这样的其他问题但似乎没有任何帮助。这是我想要实现的代码。
我的问题是我无法将TextView声明为全局变量,因为它不接受公共或静态。
public void setup() {
ArrayList<String> questions = new ArrayList<String>();
ArrayList<String> answers = new ArrayList<String>();
ArrayList<String> correctanswers = new ArrayList<String>();
TextView question = (TextView)(findViewById(R.id.textboxquestion));
RadioButton ac1 = (RadioButton)(findViewById(R.id.radiobuttona));
RadioButton ac2 = (RadioButton)(findViewById(R.id.radiobuttonb));
RadioButton ac3 = (RadioButton)(findViewById(R.id.radiobuttonc));
RadioButton ac4 = (RadioButton)(findViewById(R.id.radiobuttond));
}
public void NextQuestionAnswer() {
question.setText("something here"); ---THIS IS THE LINE THAT I WANT TO BE ABLE TO DO
}
答案 0 :(得分:2)
您无法在另一个函数中的一个函数中访问变量声明,因此您必须在类级别声明它。请在onCreate()
方法之前声明,以便您可以访问它。
实施例
public class Test extends Activity
{
private TextView textView = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
答案 1 :(得分:1)
您可以在类中放置一个全局变量,并在2种方法中使用它。
答案 2 :(得分:0)
将变量创建为全局变量
局部变量访问仅适用于方法本身
答案 3 :(得分:0)
这只是一个想法:
如果两个方法都在同一个类中,为什么不使用全局变量? 如果一个方法在不同的类中,则使用带有getter / setter的全局变量(假设变量不是公共的)
答案 4 :(得分:0)
private String textValue = null;
public void setup() {
...
setTextValue("value");
...
}
public void NextQuestionAnswer() {
question.setText(getTextValue());
}
答案 5 :(得分:0)
class MainActivity extends Activity
{
TextView tv;//global declaration
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv= (TextView) findViewById(R.id.textView)
}
public void setup() {
//tv can be accessed here also
}
public void NextQuestionAnswer() {
tv.setText("my text"); //set yout text value
}
}
当你将它声明为类变量时,可以通过类访问它。
如果在方法中声明变量,则仅在本地可用于该方法。
局部变量存储在堆栈中。实例和静态变量存储在堆上。
答案 6 :(得分:0)
您可以将其声明为私有,也可以将其公开
private TextView question
onCreate
{
question = (TextView)(findViewById(R.id.textboxquestion));
}
public void setup() {
ArrayList<String> questions = new ArrayList<String>();
ArrayList<String> answers = new ArrayList<String>();
ArrayList<String> correctanswers = new ArrayList<String>();
RadioButton ac1 = (RadioButton)(findViewById(R.id.radiobuttona));
RadioButton ac2 = (RadioButton)(findViewById(R.id.radiobuttonb));
RadioButton ac3 = (RadioButton)(findViewById(R.id.radiobuttonc));
RadioButton ac4 = (RadioButton)(findViewById(R.id.radiobuttond));
}
public void NextQuestionAnswer() {
question.setText("something here"); ---THIS IS THE LINE THAT I WANT TO BE ABLE TO DO
}