我很困惑,当我们在android studio中构建我们的项目时,我们被要求定义从哪里支持到最新,如果我们不包括支持库,它说它支持向后兼容性呢?那么我得到的方法只有最新版本,旧版本无法运行我们的代码,对不对?我也无法理解documentation
中的这些行注意:FragmentActivity是支持库中提供的一项特殊活动,用于处理早于API级别11的系统版本上的片段。如果您支持的最低系统版本是API级别11或更高,那么您可以使用常规活动
但是如果我在这种情况下扩展Activity而不是FragmentActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().findFragmentById(R.id.frag_map);
}
getSupportFragmentManager尚未解析,虽然我正在构建高于API 11的项目,那么为什么他们说你应该使用Activity?如果我使用getSupportFragment是未解决的。
后来在文档中他们说:
如果您正在使用v7 appcompat库,那么您的活动应该扩展AppCompatActivity,它是FragmentActivity的子类。有关更多信息,请阅读添加应用栏。
v7不支持早于API 11的版本吗?
答案 0 :(得分:1)
根据Compat libs支持版本24.2.0及更高版本的更改,v4和v7的最低支持版本已经变得相同,即API级别9.以下是文档现在所说的内容:< / p>
某些支持库包具有要指示的包名称 他们支持的最低API级别,使用v#表示法等 作为support-v4包。从支持库版本开始 24.2.0(2016年8月发布),支持的所有支持库包的最低支持API级别已更改为Android 2.3(API级别9)。 因此,在使用最新版本的支持时 库,你不应该假设v#包符号 表示最低API支持级别。最近版本中的更改 也意味着具有v4和v7的库包本质上是 相当于他们支持的最低API级别。例如, support-v4和support-v7包都支持最低API级别 9,对于24.2.0及更高版本的支持库版本。
主要区别在于每个引入的具体功能。两者都有不同的功能集。例如,AppCompatActivity
位于第7位,而FragmentActivity
位于第4位。在这种情况下,AppCompatActivity
应该是首选,但其他功能不会相互交叉。
请在此处阅读:https://developer.android.com/topic/libraries/support-library/index.html
免责声明: 在选择支持最低版本时,您必须仔细选择相交版本。因此,强烈建议引用文档,因为Android API更新速度非常快,而且这些答案已经过时。
原始答案:
你自己很困惑。这真的很简单。根据我的理解:
FragmentActivity
或AppCompatActivity
。因此,在使用getSupportFragmentManager
时不包括支持库必然会产生编译时错误。if(Build.VERSION_CODES < HONEYCOMB){}
。
但是FragmentActivity在v4 compat lib中。如果您不打算支持该功能,请使用v7,AppCompatActivity
android:targetSdkVersion
)的活动。另见Activity, AppCompatActivity, FragmentActivity, and ActionBarActivity: When to Use Which?