1

我已经创建了 a setOnFocusChangeListeneron anEditText所以它会抓取字符串并将其添加到TextViewvia setText()。但是,我需要一种公开和动态(以防他们EditText再次更改)使用该toString()方法的方法,以便我可以在另一个setOnFocusListener.

这是我的代码,也许它会以一种不那么令人困惑的方式解释事情:

final TextView team1NameScore = (TextView) findViewById(R.id.team1NameScore);
final EditText team1Name = (EditText) findViewById(R.id.team1Name);

team1Name.setOnFocusChangeListener(new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            String team1NameString = team1Name.getText().toString();
            // Right here I need to make the above line public so I can use it later!
            if (!hasFocus) {
                team1NameScore.setText(team1NameString + "'s Score:");
            }
        }
    });

(阅读第 5 行的评论)

我有很多焦点听众...我想将它们组合成一个预览,最后为用户生成(使用`setText(textview1 + textview2 + team1Name)

4

2 回答 2

3

在类的顶部将字符串声明为实例变量。

它不能是匿名内部类的父方法的本地变量,因为它必须是 final 才能被侦听器访问,这意味着您不能更改它的值。但是,如果您将其声明为全局实例变量,您的侦听器可以访问它,您的类中的任何其他方法和侦听器也可以访问它。

于 2013-02-12T21:41:47.630 回答
3

只需创建一个字段变量:

public class Example extends Activity {
    public String team1NameString = "";

然后像任何其他变量一样使用它:

public void onFocusChange(View v, boolean hasFocus) {
    team1NameString = team1Name.getText().toString();
于 2013-02-12T21:42:37.520 回答