点击侦听器的公共类

时间:2013-06-01 07:15:51

标签: android onclicklistener android-button

我的所有6项活动中都有7个按钮。所有6个按钮在所有活动中都具有相同的功能。如何为这6个按钮执行常见的单击事件监听器。

7 个答案:

答案 0 :(得分:9)

您可以创建一个实现View.OnClickListener的新类,如下所示:

public class MyClickListener implements View.OnClickListener {
    @Override
    public void onClick(View view) {
         // TODO handle the click   
    }
}

在您的所有活动中,您可以像这样设置点击监听器:

button.setOnClickListener(new MyClickListener());

您甚至可以在班级中保存上下文以显示Toast等。

public class MyClickListener implements View.OnClickListener {
    private Context context;

    public MyClickListener(Context context) {
        this.context = context;
    }

    @Override
    public void onClick(View view) {
         Button button = (Button) view;
         Toast.makeText(this.context, button.getText().toString(), Toast.LENGTH_SHORT).show();
    }
}

答案 1 :(得分:2)

有这样的课程:

public class OnClickMaker{
    public static View.OnClickListener getOnClick(){
         return new View.OnClickListener(){
              public void on click(View v){
                  //do stuff
              }
          };
    }
}

然后在你的其他课堂上,这样做

button.setOnClickListener(OnClickMaker.getOnClick());

答案 2 :(得分:1)

在Sagar的答案中加入更多的话语。

假设:

正如你所说,你的6个活动中有7个按钮,我假设所有7个按钮都有相同的功能/代码。

解决方案:

第1步:android:click="btnFirstClick"中将<Button>包含在XML布局中。

第2步:通过扩展Activity并使用android:onClick属性中提供的名称包含方法来定义抽象BaseActivity类。

abstract public class BaseActivity extends Activity {

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
   }

   public void btnFirstClick(View v) {
   }

   public void btnSecondClick(View v) {
   }

   .....
   .....
  // same for other buttons
}

第3步:现在将此BaseActivity扩展到您的所有6项活动。

例如:

public class FirstActivity extends BaseActivity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState); 
           setContentView(R.layout.layout_first);
    }
}

答案 3 :(得分:0)

在类中创建一个函数,并将该类放在所有其他类所在的同一个包中。只需在6个onclicklisteners中调用该函数。

答案 4 :(得分:0)

你可以这样做,

将点击事件放在XML文件android:click="clickMe"

Activity

中创建此功能
public void clickMe(View view) {
...//You handling code
}

并通过您的所有活动扩展此活动。

答案 5 :(得分:0)

您可以执行以下操作

创建基本活动

class BaseActivity extends Activity{
    public void onSpecificEvent(View v){
        // do your tasks
    }
}

现在扩展您的活动

class Activity1 extends BaseActivity
class Activity2 extends BaseActivity

您需要在xml

中使用以下按钮实现onClick
android:onClick="onSpecificEvent"

答案 6 :(得分:0)

如果你和我一样处于相同的情况,我有一个线性布局,其中有不确定数量的按钮(动态生成),你需要一个普通的监听器来支持所有按钮(例如,注销他们的文本),你可以这样做

for (int i = 0; i < linearLayout.getChildCount(); i++)
    {
        final Button b = (Button) linearLayout.getChildAt(i);
        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Commons.log(b.getText().toString());
                //your other code here
            }
        });
    }

现在,线性布局的所有子项(按钮)都具有相同的单击侦听器