0

全ての活動に取り入れたいメニューを作成中です。このために、すべてのボタン定義と 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

4 に答える 4

1

コンテキストがメンバー変数であることを宣言し、コンストラクターで次のように割り当てます。

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();

それを試してみてください。これがうまくいくことを願っています。

于 2013-10-10T10:56:54.080 に答える
0

これを試してください。 onBackPressed() は、このメソッドを呼び出すだけで機能します

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

onBackPressed();
}
};
于 2013-10-10T10:33:43.297 に答える