你如何在两个空隙之间共享一个变量/真正的东西?

时间:2013-03-26 06:12:34

标签: java android variables

我想知道如何从一个空间“分享”到另一个空白。我有两个空位:一个叫做“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

}

7 个答案:

答案 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

    }