1

我有一个在单击侦听器中创建的双精度对象,我想在同一个 java 文件中的一个单独的单击侦听器中访问它。每次我输入变量名时,它都会以红色显示,是否可以这样做?

4

3 回答 3

3

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

class MainActivity
{
    String editableString;

    public void onCreate() { ... }
}
于 2013-06-23T21:28:00.743 回答
1

当然!

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。

于 2013-06-23T21:35:09.097 回答
0

您可以创建一个实现 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;
    }
}

您可能会发现这很有用,在 Android 中创建自定义事件侦听器

于 2020-10-31T05:57:22.050 回答