1

如何获取文本按下按钮,内部onClick方法。我不能使用变量,因为它会改变。

  Button[] mButtonsArray = new Button[MyArrayList.size()];
        for (Button b : mButtonsArray) 
        {
b = new Button(this);
            b.setText("name");
            b.setOnClickListener(
                    new OnClickListener() 
                    {
                        @Override
                        public void onClick(View arg0) 
                        {
                            MyClass.MyMethod(ButtonName);
                        }
                });
}
4

7 回答 7

4

在 onclick 方法中使用它。

((Button) arg0).getText().toString();
于 2013-01-08T10:52:54.427 回答
1

您可以使用setTaggetTag...

Button[] mButtonsArray = new Button[MyArrayList.size()];
    for (Button b : mButtonsArray) 
    {
b = new Button(this);
        b.setText("name");
        b.setTag("name");
        b.setOnClickListener(
                new OnClickListener() 
                {
                    @Override
                    public void onClick(View arg0) 
                    {
                        MyClass.MyMethod((String)arg0.getTag());
                    }
            });
}
于 2013-01-08T10:48:49.377 回答
1

你为什么不直接使用

b.setOnClickListener(
                    new OnClickListener() 
                    {
                        @Override
                        public void onClick(View arg0) 
                        {
                            MyClass.MyMethod(((Button) arg0).getText().toString());
                        }
                });

这样会很简单。

于 2013-01-08T10:50:25.390 回答
1

你可以在这里使用setTag()getTag()

b.setTag("name");

并获取它使用,

  b.setOnClickListener(
     new OnClickListener() 
    {
       @Override
        public void onClick(View arg0) 
        {
            String name = (String)arg0.getTag();
        }
    });
于 2013-01-08T10:50:54.723 回答
0

只需使用以下代码:

Button[] mButtonsArray = new Button[MyArrayList.size()];
        for (Button b : mButtonsArray) 
        {
b = new Button(this);
            b.setText("name");
            b.setOnClickListener(
                    new OnClickListener() 
                    {
                        @Override
                        public void onClick(View arg0) 
                        {
                            Button b=(Button)arg0;
                            name=b.getText();
                        }
                });
}
于 2013-01-08T10:52:31.930 回答
0
b.setOnClickListener(
         new OnClickListener() {
              @Override
              public void onClick(View arg0) {
                   String name = ((Button) arg0).getText().toString();
              }
});
于 2013-01-08T10:53:27.610 回答
0

您可以通过在 arg0 上使用 getText() 将其转换为如下所示的按钮类型来获得。

   b.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View arg0) 
 {
  Button btn = (Button)arg0;
  if(btn != null)
MyClass.MyMethod(btn.getText());
  }

});

于 2013-01-08T10:54:17.060 回答