【问题标题】:"setSupportActionBar(toolbar)" inside FragmentActivity?FragmentActivity 中的“setSupportActionBar(工具栏)”?
【发布时间】:2020-08-22 17:46:43
【问题描述】:

如何在FragmentActivity 中访问setSupportActionBar(Toolbar toolbar)? 我无法在FragmentActivity内部访问它

toolbar = (Toolbar) findViewById(R.id.search_bar);
setSupportActionBar( toolbar);

【问题讨论】:

  • 需要扩展ActionBarActivity而不是FragmentActivity
  • 也许这不是一个选择。我在同一个活动中需要 FragmentActivity 和 Toolbar。

标签: android android-actionbar android-support-library


【解决方案1】:

使用最新版本的支持库,您应该让您的 Activity 扩展 AppCompatActivity,因为 ActionBarActivity 已被弃用。

它提供的功能与您之前的 ActionBarActivity 相同。您不需要进行任何进一步的更改。

【讨论】:

  • 使用这个 => ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
  • @RajanMaurya 据我了解,这与简单地调用 setSupportActionBar( toolbar); 相同
【解决方案2】:

你可以用AppCompatActivity 扩展你的类,因为AppCompatActivity extends FragmentActivity 在内部。此外,ActionBarActivity 已弃用。

【讨论】:

    【解决方案3】:

    使用支持库中的ActionBarActivity,ActionBarActivity扩展了FragmentActivity,这样就可以获取SupportFragmentManager并将工具栏设置为actionbar

    例如:

    public class MainActivity extends ActionBarActivity
    {
    
     Toolbar toolbar = (Toolbar) findViewById(R.id.search_bar);
     setSupportActionBar( toolbar);
    
     FragmentManager manager=this.getSupportFragmentManager();
    }
    

    【讨论】:

    • 使用最新版本的支持库应该使用AppCompatActivity
    【解决方案4】:

    AppCompatActivity 扩展FragmentActivity

    public class AppCompatActivity extends FragmentActivity implements AppCompatCallback, SupportParentable, DelegateProvider
    

    您可以改用AppCompatActivity

    【讨论】:

    • 你不认为这个答案可以作为@zero 答案的评论吗?
    【解决方案5】:

    如果您的课程扩展 FragmentActivity

    如果工具栏在您使用的布局内,它将默认设置。要访问它,只需执行

    (Toolbar) findViewById(R.id.toolbar)

    【讨论】:

      【解决方案6】:

      使用此方法您的活动需要扩展 ActionBarActivity 而不是 FragmentActivity

      toolbar = (Toolbar) findViewById(R.id.search_bar);
      setSupportActionBar( toolbar);
      

      希望对你有帮助

      【讨论】:

      • 我想在地图中自定义工具栏...所以如果我使用 ActionBarActivity 应用程序崩溃。
      【解决方案7】:

      如果你想让你的ViewPager添加片段,你可以扩展AppCompatActivity,它也可以。 (通常,我们扩展FragmentActivity,但之后setSupportActionBar(工具栏)不起作用) 所以,我们可以扩展AppCompatActivity,而不是扩展FragmentActivity

      【讨论】:

      • 这应该是评论,而不是答案
      【解决方案8】:

      对于FragmenrtActivity,您应该查看FragmentTabHost,并简单地添加标签:

      tab = (FragmentTabHost)findViewById(android.R.id.tabhost);
      tab.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
      tab.addTab(tabs.newTabSpec("tab1").setIndicator("TAB1"), tab1.class, null);
      

      【讨论】:

        【解决方案9】:

        而不是使用 setSupportActionBar 使用 setActionBar 例如:

        android.widget.Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);    
        setActionBar(toolbar);
        

        【讨论】:

        • 它只允许 API 21。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-15
        • 2016-04-24
        • 2015-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多