如何将动态字符串声明为public?

时间:2013-02-12 21:38:29

标签: java android tostring

我在setOnFocusChangeListener上创建了EditText,因此它会抓取字符串并通过TextView将其添加到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)

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

只需创建一个字段变量:

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

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

public void onFocusChange(View v, boolean hasFocus) {
    team1NameString = team1Name.getText().toString();