OnClickListener启动对应按钮的Activity

这阵子在写一个android小程序。主要是控制路由的。其实就是网页版的android实现方式。

大概就是:apk启动的时候,首页有三个按钮,三个按钮分别对应不同的设置。

分别是:1、ADSL设置;2、DHCP设置;3、静态IP设置。分别有一个按钮对应进入各自的设置界面

一开始,我直接用的类似

btn_adsl.setOnClickListener(new OnClickListener(){
<span style="white-space:pre">	</span>@Override
<span style="white-space:pre">	</span>public void onClick(View v){
<span style="white-space:pre">		</span>Intent intent = new Intent();
		intent.setClass(Context, class);
		startActivity(intent);
<span style="white-space:pre">	</span>}
}
这样的方式的话,三个按钮,就要写三个类似的实现代码。最近越看越不爽,就想改了它,把它做成根据各自按钮的事件,自动启动对应的activity,但使用的是同一段代码


一开始,在网上找了下。网上介绍了两种方法:

1、一种是通过设置tag的方式,大概如下

    btn_adsl.setOnClickListener(this);

    btn_adsl.setTag(1);

然后有个函数:

public void onClick(View v){
switch((Integer)v.getTag()){
case 1:
/TODO
break;
case 2:
/TODO
break;
default:
break;
}

}


2、另一种是通过判断id来实现,大概如下:

btn_adsl.setOnClickListener(this);

public void onClick(View v){
switch(v.getId()){
case R.id.btn_adsl:
/TODO
break;
case R.id.btn_dhcp:
/TODO
break;
default:
break;
}
}


但上面两种方式来说,没有实际上的差别。因为还是用的不同的分支去实现。而我要的,就只是同一段代码,根据按钮设置监听事件时所带的参数,来启动各自的界面。

后面我写了一个类,大概如下:

class ActivityListener implements OnClickListener{
		
		Activity act;
		
		public ActivityListener(Activity act){
			this.act = act;
		}
		
		public void onClick(View v){
			Intent intent = new Intent();
			intent.setClass(TabMenu.this, act.getClass());
			startActivity(intent);
		}
	}

就是在new一个ActivityListener的时候,传递不同的Activity参数下去。

 

最终的调用方式如下:

btn_adsl.setOnClickListener(new ActivityListener(new ADSLSetting()));

btn_dhcp.setOnClickListener(new ActivityListener(new DHCPSetting()));

btn_staticip.setOnClickListener(new ActivityListener(new StaticIPSetting()));

其中

public class ADSLSetting extends Activity {

/TODO

}


语言组织的不好。大概的方式就差不多这样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值