如何从匿名类中获取值?

时间:2018-04-09 08:25:32

标签: java android

我希望从这样的匿名类中获取一个值,但它始终没有显示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();

4 个答案:

答案 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方法中。