当我创建一个Android应用程序时,我在一个单独的类中使用switch语句来处理多个按钮的行为。当我单击一个按钮时,如何从另一个类中检测到按下了哪个按钮?
另一个类不是活动类。任何人都可以评论下面的代码,所以我将更好地了解如何正确实现这一点。
我在A班的第一个方法是
public void onClick(View v){
switch (v.getId()){
case R.id.button1 :
GifView.mymethod(R.id.button1);
final Dialog dialog1=new Dialog(context);
dialog1.setContentView(R.layout.dialog);
Button finish1= (Button) dialog1.findViewById(R.id.finish);
finish1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog1.dismiss();
}
});
dialog1.show();
break;
我想将此按钮ID传递给另一个类,该类具有处理所有按钮点击的业务逻辑。
private void init(Context context) {
switch(?????){
case R.id.button1:
setFocusable(true);
gifInputStream = getResources().openRawResource(R.drawable.hen);
gifMovie = Movie.decodeStream(gifInputStream);
movieWidth = gifMovie.width();
movieHeight = gifMovie.height();
movieDuration = gifMovie.duration();
break;
我可以在switch语句中做些什么?
public static int mymethod(int id) {
int buttonId=id;
return buttonId;
}
答案 0 :(得分:-1)
您可以拥有一个公共静态全局变量,然后在您的交换机内部执行以下操作:
public static int buttonClicked = 0;
...
switch(id){
case R.id.button1:
//doWhatever()
buttonClicked = R.id.button1;
break;
more cases:
break;
}
然后,如果您愿意,可以为buttonClicked
创建一个getter方法,这样您就可以随时从Activity外获取实际值。
这样你没有传递点击按钮的实际参考,这可能有问题,你只是传递了它的R.id
。如果您这样做,您将无法修改您从Activty外部点击的按钮,但您将能够知道通过其R.id
点击了哪个按钮。