我想创建一个具有预定义的onClick的CustomButton.
事实上,我的对象会做同样的工作
事实上,我的对象会做同样的工作
- CustomButton mButton = getViewById(..);
- mButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- show_something()
- }
有没有办法将Listener嵌入到继承自Button的CustomButton对象中?
我想要的是在我的布局XML文件中创建一个CustomButton,而不必在我的活动中提到这个按钮,这将给出:
main.xml中:
- <LinearLayout xmlns:"...">
- <com.mypackage.view.CustomButton
- (attributes)/>
- </LinearLayout>
CustomButton.java:
- class CustomButton extends Button implements... {
- @Override
- OnClick (or something like that,that's the core of my question,what to put here)
- }
myActivity.java
- public class myActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- }
非常感谢.
解决方法
你真的很亲密
- import android.content.Context;
- import android.util.AttributeSet;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class CustomButton extends Button implements OnClickListener{
- public CustomButton(Context context,AttributeSet attrs,int defStyle) {
- super(context,attrs,defStyle);
- init();
- }
- public CustomButton(Context context,AttributeSet attrs) {
- super(context,attrs);
- init();
- }
- public CustomButton(Context context) {
- super(context);
- init();
- }
- private void init(){
- setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- // Do something
- }
- }