我希望从这样的匿名类中获取一个值,但它始终没有显示test0
,任何人都可以帮我解决这个问题吗?
final String[] test = new String[1];
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
test[0] = "abc";
}
});
String test0 = test[0];
Toast.makeText(this, test0, Toast.LENGTH_SHORT).show();
答案 0 :(得分:3)
test[0]
的值仅在点击View
后才可用。您的代码不会等待。移动Toast
内的ClickListener
即可。
答案 1 :(得分:0)
您必须将Toast
置于setOnClickListener()
内,否则无法看到test[]
final String[] test = new String[1];
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
test[0] = "abc";
Toast.makeText(this, test[0], Toast.LENGTH_SHORT).show();
}
});
答案 2 :(得分:0)
您应该更改您的监听器以包括在onClick()
方法中显示Toast消息,因为您希望在"单击"时显示该值。发生。否则,test0
的值不会在该方法之外更新:
final String[] test = new String[1]; txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
test[0] = "abc";
String test0 = test[0];
Toast.makeText(this, test0, Toast.LENGTH_SHORT).show();
}
});
答案 3 :(得分:0)
进行此更改
final String[] test = new String[1];
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
test[0] = "abc";
Toast.makeText(this, test[0], Toast.LENGTH_SHORT).show();
}
});
仅在触发click事件后才更新test [0]的值。因此,您需要将代码放在onClick方法中。