Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问单独函数中的变量-Android_Java_Android_Function_Variables_Shared - Fatal编程技术网

Java 如何访问单独函数中的变量-Android

Java 如何访问单独函数中的变量-Android,java,android,function,variables,shared,Java,Android,Function,Variables,Shared,我已经写了这个小应用程序,它的工作非常完美。但我对java还不熟悉,我认为必须有更好的方法来编写它,以便在两个函数中都可以读取变量。有吗 package max.multiplebuttons.com; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; imp

我已经写了这个小应用程序,它的工作非常完美。但我对java还不熟悉,我认为必须有更好的方法来编写它,以便在两个函数中都可以读取变量。有吗

package max.multiplebuttons.com;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;

public class multibuttons extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView question = (TextView)findViewById(R.id.question);
        TextView textView = (TextView)findViewById(R.id.textView);
        Button answer1 = (Button)findViewById(R.id.answer1);
        Button answer2 = (Button)findViewById(R.id.answer2);
        answer1.setText("button1");
        answer2.setText("button2");
        question.setText("click a button");
        textView.setText("Some Text");
        answer1.setOnClickListener(this);
        answer2.setOnClickListener(this);
    }
    public void onClick(View v){
        TextView textView = (TextView)findViewById(R.id.textView);
        Button answer1 = (Button)findViewById(R.id.answer1);
        Button answer2 = (Button)findViewById(R.id.answer2);
        if(v==answer1){
            textView.setText("1");
        }
        if(v==answer2){
            textView.setText("2");
        }
    }
}

通过在任何方法外部但在类内部声明它们,使它们成为属于类的变量:

public class multibuttons extends Activity implements OnClickListener {
TextView question;
TextView textview;
//etc.

}
然后只需在onCreate方法中初始化它们:

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    question = (TextView)findViewById(R.id.question);
    textView = (TextView)findViewById(R.id.textView);
    //...
您根本不需要在onClick方法中再次初始化它们:

public void onClick(View v){
    if(v==answer1){
        textView.setText("1");
    }
    if(v==answer2){
        textView.setText("2");
    }
}

在方法(或由大括号括起来的任何语句块,如{})内声明的变量在该方法/块内仅具有作用域(即它们仅可见)。声明为类变量的变量可以指定为public、private、protected或default/package作用域。将它们声明为public,以便能够在任何其他类中访问它们。

感谢您的努力解释并给出答案。做了一件好事,我不知道为什么。谢谢你简洁明了的回答,这正是我需要的。让我意识到我在Java I@大学时很少关注。