如何在单击操作栏中的按钮时打开新活动?

时间:2014-04-10 19:23:30

标签: android android-actionbar

这是我的ActionBar,它有两个按钮:

My <code>ActionBar</code>

private void showActionBar() {
    LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.activity_main_actions, null);
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setCustomView(v);
}

我用这种方法来显示按钮。我在onCreate中调用了这个方法。

现在我想要点击操作栏中的任意按钮新活动打开。

例如我有AskActivity.java和MessageActivity.java

现在当我点击ASK按钮时,AskActivity.java会打开。

这可能吗?

我已经使用了它,但它没有用。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Take appropriate action for each action item click
    switch (item.getItemId()) {
    case R.id.action_ask:
        Intent i = new Intent(getApplicationContext(), AskActivity.class);
        startActivity(i);
        return true;
    case R.id.action_message:
        Intent ij = new Intent(getApplicationContext(), MessageActivity.class);
        startActivity(ij);
        return true;

default:
    return super.onOptionsItemSelected(item);
    }
}

2 个答案:

答案 0 :(得分:1)

我认为这是因为onOptionsItemSelected方法与MenuItem有关,而与CustomView无关。两个按钮不是选项菜单项,它们是布局activity_main_actions内的按钮。您有两种选择 - 要么创建一个新的单击侦听器,如下所示:

Button action_ask = (Button) findViewById(R.id.action_ask); 
action_ask.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v){
         // do something
    }
}  

或者,使用on click属性方法:

<Button
    android:id="@+id/action_ask"
    ...
    android:onClick="actionAskClicked" />

然后在你的活动中:

public void actionAskClicked() {
    // do something
}  

其他按钮action_message也是如此。希望这会有所帮助。

答案 1 :(得分:1)

您需要创建一个方法,通过菜单按钮点击打开活动:

 public boolean onOptionsItemSelected(MenuItem item) {
 // Take appropriate action for each action item click
 switch (item.getItemId()) {
 case R.id.action_ask:

    startActivity(AskActivity.class);
    return true;
 default:
  return super.onOptionsItemSelected(item);
  }
}

 protected void StartActivity(Class<?> cls) {
    Intent intent = new Intent(activity, cls);
    activity.startActivity(intent);
 }