将按钮功能设置为后退键

时间:2013-10-10 10:30:06

标签: android button back

我正在创建一个我希望参与所有活动的菜单。为此,我正在创建一个包含所有按钮定义和onClickListeners的类。

我遇到的问题是定义后退按钮作为物理后退按钮。我创建这个类的方式,它不能识别finish()onBackPressed()等函数。那么,这样做的方法是什么?

public class MenuView extends RelativeLayout {

private final LayoutInflater inflater;


public MenuView(Context context, AttributeSet attrs) {
    super(context, attrs);

    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.menu_view, this, true);

    ((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack);
}


private final OnClickListener goBack = new OnClickListener() {
    @Override
    public void onClick(View v) {
        //HERE TO INSERT THE WAY TO DO IT
    }
};

4 个答案:

答案 0 :(得分:4)

应该足以将context属性提取为成员变量,并在监听器中使用它,如((Activity) context).finish()

答案 1 :(得分:1)

要完成当前可见的Activity,您需要参考它。

试一试,

    public class MenuView extends RelativeLayout {

private final LayoutInflater inflater;
private Activity mActivity;

public MenuView(Context context, AttributeSet attrs) {
    super(context, attrs);
    mActivity = (Activity)context;
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.menu_view, this, true);

    ((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack);
}


private final OnClickListener goBack = new OnClickListener() {
    @Override
    public void onClick(View v) {
    mActivity.finish();
    }
};

我希望它会有所帮助!

答案 2 :(得分:1)

声明一个context是一个成员变量,并在你的构造函数中分配它:

Context context;

public MenuView(Context context, AttributeSet attrs) {
    super(context, attrs);

    this.context = context;
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    inflater.inflate(R.layout.menu_view, this, true);

    ((ImageView)this.findViewById(R.id.backButton)).setOnClickListener(goBack);
  }

在您的点击监听器中,您可以添加以下代码行:

((Activity) context).finish();

试试吧。希望这会奏效。

答案 3 :(得分:0)

试试这个,onBackPressed()只需调用此方法就可以了

 private final OnClickListener goBack = new OnClickListener() {
@Override
public void onClick(View v) {
    //HERE TO INSERT THE WAY TO DO IT

onBackPressed();
}
};