首页 文章

在android中动态添加按钮,如何将onClick添加到xml

提问于
浏览
0

下面是这种情况:我有一个动态生成一堆随机自定义图像按钮的活动,并将它们添加到TableView中,在TableView中,在我的xml中 . 此活动还有一个方法,我想在单击其中一个/任何一个按钮时调用 . 按钮里面有变量;该方法获取这些变量并将它们设置为TextView(在同一个活动中),因此我认为所有按钮都可以使用这一个方法 . 如果这些按钮是在XML中定义的,我会使用android:onClick =“displayCell”来指定方法,但它们不是 . 有没有办法只为这些按钮设置onClick,因为我在活动中生成它们或者我必须使用它们

button.setOnClickListener(new OnClickListener());

正如我在这里的一些答案中看到的那样经历一堆麻烦?我遇到的问题是我似乎无法从onClick内部调用我的方法,因为方法的参数(按钮)不是最终的(我在循环中制作了一堆'按钮'所以我不喜欢我认为它可以是:)

button.setOnClickListener(new OnClickListener(){public void onClick(View q){button.getActivity() . displayCell(button); //我想做这样的事情,但这显然不起作用}});

4 回答

  • 0

    您可以让Activity实现OnClickListener,然后(假设您在活动中):

    button.setOnClickListener(this);
    
  • 1

    是的comodoro状态,或者让你的onClickLIstener成为你 class 的成员变量,不要在每个按钮上做“新” .

    private OnClickListener mOnClickListener = new OnClickListener() {...};
    

    并在创建按钮时:

    button.setOnClickListener(mOnClickListener);
    

    监听器中的onClick()函数将传递按钮本身的视图 . 您可以从此功能访问按钮变量等 .

    public void onClick(View v)
    {
     ImageButton button = (ImageButton)v;
     // and access your button data via button object...
    }
    
  • 0

    解决方法可能是:

    • 创建不同的按钮实例 . (所以你可以让它们成为最终的)

    • 使用 setId() 方法为它们提供一个整数ID(稍后再引用它们) . 您可以将ID存储在 List 以便稍后引用它们 .

    • 在创建它们后立即定义它们的onClickListeners .

  • 1

    尝试使用从按钮继承的类并在那里添加OnClickListener . 像这样:

    class MyButton extends Button {
    
            OnClickListener clicker = new OnClickListener() {
            public void onClick(View v) {
    
                  displayCell(v);
    
            }
            };
    
    }
    

相关问题