这是我的ActionBar
,它有两个按钮:
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);
}
}
答案 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);
}