我的所有6项活动中都有7个按钮。所有6个按钮在所有活动中都具有相同的功能。如何为这6个按钮执行常见的单击事件监听器。
答案 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
中使用以下按钮实现onClickandroid: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
}
});
}
现在,线性布局的所有子项(按钮)都具有相同的单击侦听器