我正在创建一个应用程序,其中包括对Android Lolipop和更早版本的支持。

根据Maintaining compatibility文档,我计划将非App的ActionBarActivity与AppCompact一起用于非Lolipop设备,而FragmentActivity的材料用于Lolipop设备。

我创建了两个不同的值文件夹。

现在的问题是我应该如何扩展我的Activity类

MyActivity extends Activity


要么

MyActivity extends ActionBarActivity


如果我使用活动。它在较早的android版本上崩溃,并说我添加ActionBarActivity,反之亦然,lolipop

编辑------

值21

<style name="AppTheme" parent="android:Theme.Material.Light">


价值观

<style name="AppTheme" parent="Theme.AppCompat.Light">

最佳答案

如果要在低于11的api上使用ActionBar,则可以扩展ActionBarActivity以支持api> = 7签出http://developer.android.com/guide/topics/ui/actionbar.html

也可能会引起混乱,但是当您使用ActionBarActivity
您的主题必须是Theme.AppCompact后代之一的子代,例如

 <style name="MyTheme" parent="Theme.AppCompact">
    <item name="android:colorPrimary">@color/accent_1</item>
    <item name="android:colorPrimaryDark">@color/accent_dark</item>
    <item name="android:colorAccent">#f00</item>

    <item name="colorPrimary">@color/accent_1</item>
    <item name="colorPrimaryDark">@color/accent_dark</item>
    <item name="colorAccent">#f00</item>

</style>


非前缀android:< API 21 (Lollipop)的用户提供您想要的Material主题兼容性。

关于android - 扩展Activity或ActionBarActivity,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26449454/

10-10 21:40