Android中Activity和AppcompatActivity的區別(詳細解析)


 

轉載 https://blog.csdn.net/today_work/article/details/79300181

 

繼承AppCompatActivity的界面。 如下圖所示:

copy界面代碼

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
1
2
3
4
5
6
7
8
大家可以看到在界面最上面會出現一個ActionBar,默認顯示項目的名稱Toolbar。下面我們將AS項目中的父類AppCompatActivity手動替換成Activity試試看。

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
1
2
3
4
5
6
7
8
修改AppCompatActivity為Activity,並導入相應的包。這樣我們的項目代碼在Eclipse與AS的就保持一致了,運行一下看看效果。

程序運行后,大家可以發現頂部的ActionBar不見了,代碼中都是繼承Activity的,但是運行出來的界面確不一樣,所以在AS中創建項目的時候,自動繼承的是AppCompatActivity。

ActionBar向前兼容,出現在support v7里,如果需要使用兼容版的actionbar,則繼承support v7提供的ActionBarActivity
從下圖看ActionBarActivity實際就是AppCompatActivity,就是帶有標題欄的Activity.

但是在compile ‘com.android.support:appcompat-v7:26.1.0’包下沒有ActionBarActivity這個類了。
所以AppcompaActivity其實就是ActionBarActivity

去掉AppcompaActivity的標題欄方法:
if (getSupportActionBar()!=null){
getSupportActionBar().hide();
}
總結一下:AppcompaActivity相對於Activity的主要的兩點變化;
1:主界面帶有toolbar的標題欄;
2,theme主題只能用android:theme=”@style/AppTheme (appTheme主題或者其子類),而不能用android:style。 否則會提示錯誤: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
---------------------
作者:today_work
來源:CSDN
原文:https://blog.csdn.net/today_work/article/details/79300181
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM