项目每个页面都需要一个比较复杂的导航控件 其实就是一个很多按钮的布局
当然这个一个一个写绑定事件完全没问题,但项目有20来个页面 一个一个写就不好了,于是想到把他放到一widger包下 那个页面用到了 include他的xml然后在Activity实例化他
FootView.java
package com.aijia.widget;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;import com.aijia.main.AijiaExitActivity;
import com.aijia.main.AijiaTabsActivity;
import com.aijia.main.R;
import com.aijia.main.AijiaIndexActivity;
import com.aijia.overall.Constant;public class FootView {private Button index;private Button back;private Button shopcar;private Context context;private Button f_order;private Button f_exit;public FootView(Context context) {this.context = context;}public void init(View view) {index = (Button) view.findViewById(R.id.f_index);back = (Button) view.findViewById(R.id.f_back);shopcar = (Button) view.findViewById(R.id.f_shopcar);f_order = (Button) view.findViewById(R.id.f_order);f_exit = (Button) view.findViewById(R.id.f_exit);index.setOnClickListener(listener);back.setOnClickListener(listener);shopcar.setOnClickListener(listener);f_order.setOnClickListener(listener);f_exit.setOnClickListener(listener);}private OnClickListener listener = new OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.f_index:gotoIntent(AijiaIndexActivity.class);break;case R.id.f_back:((Activity) context).finish();break;case R.id.f_shopcar:Constant.CURRENTTABID = 3;gotoIntent(AijiaTabsActivity.class);break;case R.id.f_order:Constant.CURRENTTABID = 4;gotoIntent(AijiaTabsActivity.class);break;case R.id.f_exit:gotoIntent(AijiaExitActivity.class);break;default:break;}}};private void gotoIntent(Class<?> cls) {Intent intent = new Intent(context, cls);context.startActivity(intent);((Activity) context).finish();}}
如上 可以进行跳转退出等操作 注意他的init方法 参数是一个view,哪里的view呢?我们看Activity调用他的代码
FootView footView = new FootView(context);View roverall_footer = this.findViewById(R.id.overall_footer);footView.init(roverall_footer);
这样的话就可以 在应用中复用自己的控件了.