在整个班级中使用变量

时间:2011-11-08 03:22:14

标签: java android

如何或在何处定义可在整个活动中使用的变量?我有三个onClick Listenener,每个都包含一堆if else语句。一个onClick导致一堆calaculations发生,另一个onClick使用out.write指令保存计算结果。我有一个问题是从我的代码的save onClick部分知道onClick例程的if else计算中获取双变量。我一直在看书,寻找答案但似乎没什么用。我使用断点在out.write之前停止,该out.write包含来自执行onClick例程的变量,但它们是未知值。我首先想到变量需要是全局的,但我只需要它们在整个活动中都可用。

我已阅读了大量书籍并试图理解,但我跳入java并编写了3000多行。一切都可以得到输入,决定输入是什么,并显示结果。我甚至在SD卡上创建了一个很好的.xml文件,显示了所有的数据结果。问题是当我尝试在out.write代码中放入一个变量时,变量m1_sqs1_eng在onCreate例程中是未知的。我把我的变量定义为你的例子,但它没有用。我的问题的一些代码示例:

public class MyActivity extends Activity {
    private EditText m1_sqs1;
    private Spinner m1_sqs1_spinner;
    private double m1_sqs1_eng;
    private double m1_sqs1_value;

    protected onCreate( Bundle savedBundle ) {
       m1_sqs1_spinner = (Spinner) findViewById(R.id.m1_sqs1_spinner);
       m1_sqs1 = (EditText) findViewById(R.id.m1_sqs1);

        btnExecute.setOnClickListener(new View.OnClickListener() {
      if (((m1_sqs1_spinner.getSelectedItem().toString().equals("in")))) {
       double m1_sqs1_eng = new Double(m1_sqs1.getText().toString());
       });

    btnSave.setOnClickListener(new View.OnClickListener() {
      public void onClick(View arg0) {
      m1_sqs1_value = m1_sqs1_eng;
      out.write ("    <Cell ss:StyleID=\"s44\"><Data ss:Type=\"Number\">" + m1_sqs1_value + "</Data><NamedCell ss:Name=\"Print_Area\"/></Cell>\r\n");
       });
    }
}

2 个答案:

答案 0 :(得分:4)

例如:

public class MyActivity extends Activity {
    private EditText streetField;
    private EditText nameField;

    protected onCreate( Bundle savedBundle ) {
       streetField = findViewById( R.id.streetField );
       nameField = findViewVById( R.id.nameField );

       someButton.setOnClickListener( new View.OnClickListener() {
           public void onClick( View view ) {
               Person person = new Person();
               person.setName( nameField.getText().toString() );
               person.setStreet( streetField.getText().toString() );
           }
       });
    }
}

这里,streetField和nameField是MyActivity类的实例变量。它们可以在实例方法中定义的任何实例方法,内部类或匿名内部类中使用。您可能希望学习一本介绍性的Java书籍,因为大部分内容都在这些书中讨论过。

http://java.sun.com/docs/books/effective/

答案 1 :(得分:2)

您应该在父活动中定义类级别变量,并在onClickListeners中访问它们。

如果此Listener类是匿名内部类,则可以直接访问此变量。 或者,如果这些是作为公共类实现的,那么您可以在创建它们时将活动引用传递给这些侦听器。