一般写程序主函数很长会不美观,更不好阅读!解决方法当然写到子类里,或建个方法去出来,但有网友可能遇到和博主同样的问题,像Toast,Dialog或者Button、TextView这些在Activity里才能使用的控件到了非Activuty使用总会出错。。。很是头疼,博主前段时间也是困惑了很长时间,终于找到方法,百试不爽。。。这都源于java基础的薄弱啊。。。没办法,好多童鞋和博主一样有点C的基础就上手Android了。。。java基础还得补补,好了不废话,看方案:
在主程序中定义了个开关按钮 ToggleButton
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.ToggleButton);
ToggleButtonListener toggleButtonListener=new ToggleButtonListener();
toggleButtonListener.setToggleButtonListener(toggleButton);
上面第二行的setToggleButtonListener也是在ToggleButtonListener中自定义的方法,同样也是右击生成。
这样就可以setToggleButtonListener里添加自定义的点击事件了:
public void setToggleButtonListener(ToggleButton toggleButton) {
// TODO Auto-generated method stub
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
Toast.makeText(context, "现在是选中", 1).show();
} else {
Toast.makeText(context, "现在未选中", 1).show();
}
}
});
}
处理这个方法就是通过构造函数将主函数里的Context传递过来,具体方法:
1、在子类里定义一个Context
private Context context;
public ToggleButtonListener(Context context) {
this.context = context;
}
设定好后就会发现Toast一切正常,可以使用了!
但是别忘了这里是将主函数里的Context传递过来的,所以再主函数里将
ToggleButtonListener toggleButtonListener=new ToggleButtonListener();
改为:
ToggleButtonListener toggleButtonListener=new ToggleButtonListener(MainActivity.this);
一切OK!看看完整代码:
主程序MainActivity:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.ToggleButton);
ToggleButtonListener toggleButtonListener=new ToggleButtonListener(MainActivity.this);
toggleButtonListener.setToggleButtonListener(toggleButton);
}
public class ToggleButtonListener {
private Context context;
public ToggleButtonListener(Context context) {
this.context = context;
}
public void setToggleButtonListener(ToggleButton toggleButton) {
// TODO Auto-generated method stub
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
Toast.makeText(context, "现在是选中", 1).show();
} else {
Toast.makeText(context, "现在未选中", 1).show();
}
}
});
}
}
这里还要提醒大家的就是代码优化的问题!这里的:
ToggleButtonListener toggleButtonListener=new ToggleButtonListener(MainActivity.this);
是不好的,每次都要创建一下,建议直接先定义好
ToggleButtonListener toggleButtonListener;
然后再使用这个自定的方法!
好了结束了,初学者看看,老鸟就别笑话里面的方法、类什么的表述错误了,有时候知道是怎么个回事就是表述不出来啊。。。
转载请注明出处啊:http://blog.csdn.net/handsomeslow/article/details/15505345