2014-04-10 97 views
1

这是我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); 
    } 
} 
+0

发表您的logcat或错误 –

+0

没有得到错误。只是无法打开按钮上的AskActivity.class点击 – user3393921

+0

是的,你以前说过。那么你为什么不把Log.d或者某些东西去追踪实际发生的事情。 –

回答

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 
    } 
} 

或者,使用上点击属性的方法:

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

然后您的活动中:

public void actionAskClicked() { 
    // do something 
} 

相同的另一个按钮action_message。希望这可以帮助。

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