안녕하세요.
커스텀으로 타이틀 바를 만들어서 사용하려 합니다.
타이틀바의 해당 이미지를 클릭시에 activity로 interface를 통해 이벤트를 넘겨주로 합니다.
listener 초기화도 정상적으로 된것으로 보이는데.
실제 동작시에는 null error 로 인해 동작을 하지 않습니다.
혹시 이런 경우 어떻게 해야 하는지 아시는 분 계시면..
답변 좀 부탁드리겠습니다.
==== 커스텀 뷰 ====
public class CustomTitleBar extends LinearLayout implements View.OnClickListener{
public interface OnTitleBarListener {
void onBackKeyPress();
void onSettingPress();
}
private LinearLayout mLlBack;
private LinearLayout mLlSetting;
private TextView mTvTitle;
private OnTitleBarListener mTitleBarListener;
public CustomTitleBar(Context a_context){
super(a_context);
init(a_context, null, 0);
}
public CustomTitleBar(Context a_context, AttributeSet attrs) {
super(a_context, attrs);
init(a_context, attrs, 0);
}
public CustomTitleBar(Context a_context, AttributeSet attrs, int defStyleAttr) {
super(a_context, attrs, defStyleAttr);
init(a_context, attrs, defStyleAttr);
}
private void init(Context a_context, AttributeSet attrs, int defStyleAttr){
LayoutInflater inflater = (LayoutInflater) a_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.layout_title_bar, this, true);
mTvTitle = (TextView)view.findViewById(R.id.tv_title);
mLlBack = (LinearLayout)view.findViewById(R.id.ll_back);
mLlBack.setOnClickListener(this);
mLlSetting = (LinearLayout)view.findViewById(R.id.ll_setting);
mLlSetting.setOnClickListener(this);
}
public void setTitleBarListener(OnTitleBarListener a_listener){
this.mTitleBarListener = a_listener;
}
public void setTitle(String a_title){
mTvTitle.setText(a_title);
}
@Override
public void onClick(View v) {
if(mTitleBarListener == null){
return;
}
switch (v.getId()){
case R.id.ll_back:
mTitleBarListener.onBackKeyPress();
break;
case R.id.ll_setting:
mTitleBarListener.onSettingPress();
break;
default:
break;
}
}
}
==== activity 에서 호출 ====
mTitleBar = new CustomTitleBar(mContext, null);
mTitleBar.setTitleBarListener(this);
mTitleBar.setTitle(getString(R.string.str_main_activity));