AndroidX中的Activity.getActionBar如何工作?

时间:2019-02-04 19:32:10

标签: android androidx

在我的应用程序中,我有一个LoginActivity,我想在登录后将其交换为NavigationDrawerActivity。因此,我更改了LoginActivity的代码,以便Button可以启动NavigationDrawerActivity,它是通过 New> New Activity> NavigationDrawerActivity 进行的。由于我使用的是AndroidX,因此预定义方法中存在一些问题

private ActionBar getActionBar()
{
    return getActivity().getActionBar();
}

这需要 androidx.appcompat.app.ActionBar,但找到android.app.ActionBar

我已经通过谷歌搜索了这个问题,有人说我需要从AppCompatActivity扩展而不是FragmentActivity,但是该类只是从Fragment扩展。这就是为什么我不能使用getActivity().getSupportActionBar()的原因。 我也尝试过像这样getActivity()AppCompatActivity投射到((AppCompatActivity)getActivity()).getSupportActionBar(),但是这样看起来很奇怪:

weird

但我希望它看起来像这样:

normal

P.S .:其中一些是经过粉刷处理的,并不代表最终的内容。它显示了应用的实际名称

1 个答案:

答案 0 :(得分:0)

我发现了问题。 当我将AppTheme从 group group_idx 0 B 2 1 A/D 1 2 D 6 3 D 6 4 A 0 更改为Theme.AppCompat.Light.DarkActionBar然后创建新的Theme.MaterialComponents.Light.DarkActionBar时,Android Studio似乎有些混乱。 就像我第一次创建NavigationDrawerActivity然后更改主题时一样,它可以正常工作。