Java 如何访问OnClickListener中的变量

Java 如何访问OnClickListener中的变量,java,android,click,listener,Java,Android,Click,Listener,我在一个点击式监听器中创建了一个double,我想在同一个java文件中的一个单独的点击式监听器中访问它。每次我输入变量名时,它都会显示为红色,是否可以这样做 是,将其声明为类的全局变量 class MainActivity { String editableString; public void onCreate() { ... } } 当然 class X { String s; JTextField field1 = new JTextField();

我在一个点击式监听器中创建了一个double,我想在同一个java文件中的一个单独的点击式监听器中访问它。每次我输入变量名时,它都会显示为红色,是否可以这样做

是,将其声明为类的全局变量

class MainActivity
{
    String editableString;

    public void onCreate() { ... }
}
当然

class X { 
    String s;
    JTextField field1 = new JTextField();
    JTextField field2 = new JTextField();
    JButton button = new JButton();
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            s = field1.getText();
            field2.setText(s);
        }
    });
}

在本例中,我完全按照您的要求执行:)。只需在监听器外部声明变量,就可以随时随地访问它。注意:注意“NullPointerExceptions”。如果您在没有初始化的情况下声明某个内容,就像我在“String s;”中所做的那样,它的默认值为null。如果您在初始化它之前尝试访问它,您将收到null

您可以创建一个实现OnClickListener类的自定义侦听器类,并将该类的对象传递给setOnClickListener方法。您可以使用自定义类的构造函数在其内部设置全局变量。然后可以访问侦听器方法中的局部变量。我希望它能解决你的问题

abstract class CustomOnClickListener implements View.OnClickListener {
int id;
String name;

    public abstract boolean onTouch(View v, MotionEvent event);

    CustomOnClickListener(int id, String name){
        this.id = id;
        this.name = name;
    }
}

您可能会发现这很有用,

谢谢,最终我意识到它需要在我的班级中名列前茅,而且一切都很好。此外,请小心NullPointerException。当您“在类的最顶端”声明某个内容时,此错误非常常见:。