我在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)
答案 0 :(得分:3)
将字符串声明为类顶部的实例变量。
它不能是匿名内部类的父方法的本地变量,因为它必须是最终由侦听器访问,这意味着您不能更改其值。但是,如果将其声明为全局实例变量,则您的侦听器可以访问它,就像您的类中的任何其他方法和侦听器一样。
答案 1 :(得分:3)
只需创建一个字段变量:
public class Example extends Activity {
public String team1NameString = "";
然后像任何其他变量一样使用它:
public void onFocusChange(View v, boolean hasFocus) {
team1NameString = team1Name.getText().toString();