为自定义ActionBar按钮实现OnClick方法

时间:2015-06-22 14:08:17

标签: android android-layout android-activity android-actionbar

我有一个与平常相关的活动,使用:

setContentView(R.layout.layout_precode_checklist);

但是,此活动使用自定义操作栏,该操作栏具有独立的布局,使用:

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getActionBar().setCustomView(R.layout.precode_checklist_actionbar);

layout.precode_checklist_actionbar内部,我有一个带有onClick方法的按钮元素toMainMenu。我的问题是,当我尝试在Activity类中实现该方法时,我收到错误:

Could not find a method toMainMenu(View) in the activity class   android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button

实现:

public void toMainMenu(View view) {
    Intent intent = new Intent(this, MainMenu.class);
    startActivity(intent);
}

有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:1)

我认为这是因为android.view.ContextThemeWrapper用于充气视图,而非活动。试试

setCustomView(...);
getCustomView().findViewById(R.id.button).setOnclickListener(...)

答案 1 :(得分:1)

我想你可以使用

getActionBar().getCustomView().findViewById(R.id.your_button_id).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    Intent intent = new Intent(YourCurrentAcivity.this, MainMenu.class);
    startActivity(intent);
}});

致电getActionBar().setCustomView(...)

答案 2 :(得分:0)

在.xml文件中提供 android:onClick =" clickEvent"

public void clickEvent(View v) {
    if (v.getId() == R.id.button1) {
        Toast.makeText(MainActivity.this, "you click on button1",
                Toast.LENGTH_SHORT).show();
    }

    if (v.getId() == R.id.button2) {
        Toast.makeText(MainActivity.this, "you click on button2",
                Toast.LENGTH_SHORT).show();
    }

}