0

我想知道如何将事物从一个虚空“共享”到另一个虚空。我有两个空白:一个称为“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

}
4

7 回答 7

2

您不能在另一个函数的一个函数中访问变量声明,因此您必须在类级别声明它。onCreate()请在Method之前声明它,以便您可以访问它。

例子。

public class Test extends Activity 
{
    private TextView textView = null;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }   
}
于 2013-03-26T06:15:22.260 回答
1

您可以在您的类中放置一个全局变量,并在您的 2 种方法中使用它。

于 2013-03-26T06:13:59.303 回答
0
 private String textValue = null;   
 public void setup() {
     ...
     setTextValue("value");
     ...
 }

 public void NextQuestionAnswer() {

    question.setText(getTextValue());

 }
于 2013-03-26T06:17:22.943 回答
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

  }

}

当您将其声明为类变量时,可以通过类访问。

如果您在方法内声明变量,则该变量仅在该方法本地可用。

局部变量存储在堆栈中。实例和静态变量存储在堆上。

于 2013-03-26T06:18:04.370 回答
0

创建变量作为全局变量

局部变量访问仅限于方法本身

于 2013-03-26T06:16:02.687 回答
0

这只是一个想法:

如果两种方法都在同一个类中,为什么不使用全局变量?如果一种方法在不同的类中,请使用带有 getter/setter 的全局变量(假设变量不是公共的)

于 2013-03-26T06:16:11.730 回答
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

    }
于 2013-03-26T06:19:47.840 回答