【问题标题】:Change text of ActionBar when switching tabs切换选项卡时更改 ActionBar 的文本
【发布时间】:2013-08-24 18:55:37
【问题描述】:

我有一个带有标签的 ActionBar。

    actionBar = getActionBar();

    // Hide Actionbar Icon
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(true);
   // Create Actionbar Tabs
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Create first Tab
    tab = actionBar.newTab().setTabListener(new BusinessActivity());
    // Create your own custom icon
//    tab.setIcon(R.drawable.business);
    tab.setText("Business");
    actionBar.addTab(tab);

我示例中的 BusinessActivity 类是扩展 Fragment。

如何在切换标签时更改 ActionBar 标题?

谢谢。

【问题讨论】:

  • 你不应该调用 "new BusinessActivity()" 。您应该创建一个匿名类,或者将其设置为当前实例。
  • 谢谢,但如果设置为这个,我将如何设置选项卡以打开新活动?
  • 我的意思是它应该在当前上下文中运行。例如,如果此代码驻留在名为“MainActivity”的活动中,则应将参数设置为“MainActivity.this”。在任何情况下,您都不应该创建活动(或服务,或广播接收器,或 ContentProviders 或应用程序)的新实例。它们是由框架自动创建的。
  • 但我再次问,当我按下选项卡时如何开始其他活动。我的意思是不仅要更改操作栏的标题,还要开始一个新的活动
  • 在您更改标题的同一块中,只需调用 "startActivity(new Intent(...,...))" 。这一切都取决于您在此处发布的代码。因为我不知道周围是什么,我不能告诉你具体写什么。如果这是外部类的一部分,您应该将当前活动作为参数发送,或者改用应用程序上下文。

标签: java android android-actionbar


【解决方案1】:

当您切换标签时调用

ActionBar actionBar = getActionBar();
actionBar.setTitle("Your new title");

【讨论】:

    【解决方案2】:

    我猜:

    getActionBar().setTitle("Title");
    

    【讨论】:

      【解决方案3】:

      例子:

      public class Test extends Activity implements ActionBar.TabListener{
      
          @Override
          public void onCreate(Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
      
              getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
              getActionBar().setDisplayShowTitleEnabled(true);
      
              ActionBar.Tab t1 = getActionBar().newTab().setText("Tab1").setTabListener(this);
              ActionBar.Tab t2 = getActionBar().newTab().setText("Tab2").setTabListener(this);
              ActionBar.Tab t3 = getActionBar().newTab().setText("Tab3").setTabListener(this);
      
              getActionBar().addTab(t1);
              getActionBar().addTab(t2);
              getActionBar().addTab(t3);
      
          }
      
          @Override
          public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
              getActionBar().setTitle(tab.getText());
          }
      
          @Override
          public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
      
          }
      
          @Override
          public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
      
          }
      }
      

      结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多