BaseActivity下自定义actionbar中的button设置点击事件无效,代码见下。

package com.lyri.main.base;

import com.example.LlsqPs.R;

import android.app.ActionBar;
import android.app.Activity;
import android.app.ActionBar.LayoutParams;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class BaseActivity extends Activity
{
private Button backBtn;//返回按钮
private TextView titleTextView; //标题title

@Override
protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
}

/**
 * 自定义actionbar的接口
 *@author lyri
 *@time 2014年12月27日
 * @param layoutId
 * @return View 将自定义actionbar的布局View对象返回给activity
 */
public View setActionBarLayout(int layoutId)
{
    ActionBar actionBar = getActionBar();
    if (null != actionBar)
    {
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);
        LayoutInflater inflator = LayoutInflater.from(this);

        View v = inflator.inflate(layoutId, null);
        ActionBar.LayoutParams layout = new ActionBar.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        actionBar.setCustomView(v, layout);

        backBtn=(Button)v.findViewById(R.id.myacitonbar_back_btn);
        backBtn.setOnClickListener(mActionBarOnclickListener);
        titleTextView=(TextView)v.findViewById(R.id.myactionbar_title);
        return v;
    }
    return null;
}

public OnClickListener mActionBarOnclickListener=new OnClickListener()
{

    @Override
    public void onClick(View v)
    {
        // TODO Auto-generated method stub
        if (v.getId()==R.id.myactionbar_title)
        {
            backOnclick();
        }
    }
};

/**
 * actionbar返回按钮点击事件处理
 * 子类可以override该函数,实现自己的返回事件
 *@author lyri
 *@time 2014年12月27日
 */
public void backOnclick()
{
    //defualt 默认结束
    finish();
}

/**
 * 设置actionbar的标题
 *@author lyri
 *@time 2014年12月27日
 * @param titleStr
 */
private void setTitle(String titleStr)
{
    titleTextView.setText(titleStr);
}

}

2个回答

没有初始化自定义layout
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

//setActionBarLayout 加上自定义布局初始化
}

LYRIC_315
lyri 在子类继承BaseActivity的时候,按理说应该这里的点击事件是有效的啊。能否给个解释呢?
接近 6 年之前 回复

需要加载界面布局文件,在重写onCreate()方法里面,应该添加setContentView(R.layout.main),将界面布局加载进去即可。//当然main.xml是我自己定义的.

LYRIC_315
lyri 恩恩,是这样的。那为什么子类不能获取Baseactivity里面定义的点击事件呢?在子类继承他的时候,按理说应该这里的点击事件是有效的啊。能否给个解释呢?
接近 6 年之前 回复
LYRIC_315
lyri 恩恩,是这样的。那为什么子类不能获取Baseactivity里面定义的点击事件呢?在子类继承他的时候,按理说应该这里的点击事件是有效的啊。能否给个解释呢?
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐