Avtivity和AppCompactActivity

不知道大家有没有发现,当使用Eclipse开发 Android 应用的时候,当创建项目的时候,MainActivity自动继承的是Activity,而在使用Android Studio开发Android应用的时候,创建项目时,自动继承的是AppCompatActivity。我们分别用Eclipse与AS创建项目并运行,发现继承的父类不一样,但是运行出来的界面是一样的,如下图所示:



大家可以看到在界面最上面会出现一个ActionBar,默认显示项目的名称Toolbar。下面我们将AS项目中的父类AppCompatActivity手动替换成Activity试试看。



  1. public class MainActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.     }  
  8. }  

  1. public class MainActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.     }  
  8. }  
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
修改AppCompatActivity为Activity,并导入相应的包。这样我们的项目代码在Eclipse与AS的就保持一致了,运行一下看看效果。


程序运行后,大家可以发现顶部的ActionBar不见了,代码中都是继承Activity的,但是运行出来的界面确不一样,所以在AS中创建项目的时候,自动继承的是AppCompatActivity。


ActionBar向前 兼容,出现在support v7里,如果需要使用兼容版的actionbar,则继承support v7提供的ActionBarActivity(它是继承FragmentActivity的)。当推出Android 5.0之后,提供了很多很多新东西,于是support v7也更新了,出现了AppCompatActivity。 AppCompatActivity是用来替代ActionBarActivity的,如果当你把代码中的父类改为ActionBarActivity时,会发现提示已经过时。
        </div>
            </div>
不知道大家有没有发现,当使用Eclipse开发 Android 应用的时候,当创建项目的时候,MainActivity自动继承的是Activity,而在使用Android Studio开发Android应用的时候,创建项目时,自动继承的是AppCompatActivity。我们分别用Eclipse与AS创建项目并运行,发现继承的父类不一样,但是运行出来的界面是一样的,如下图所示:



大家可以看到在界面最上面会出现一个ActionBar,默认显示项目的名称Toolbar。下面我们将AS项目中的父类AppCompatActivity手动替换成Activity试试看。



  1. public class MainActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.     }  
  8. }  

  1. public class MainActivity extends AppCompatActivity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.     }  
  8. }  
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
修改AppCompatActivity为Activity,并导入相应的包。这样我们的项目代码在Eclipse与AS的就保持一致了,运行一下看看效果。


程序运行后,大家可以发现顶部的ActionBar不见了,代码中都是继承Activity的,但是运行出来的界面确不一样,所以在AS中创建项目的时候,自动继承的是AppCompatActivity。


ActionBar向前 兼容,出现在support v7里,如果需要使用兼容版的actionbar,则继承support v7提供的ActionBarActivity(它是继承FragmentActivity的)。当推出Android 5.0之后,提供了很多很多新东西,于是support v7也更新了,出现了AppCompatActivity。 AppCompatActivity是用来替代ActionBarActivity的,如果当你把代码中的父类改为ActionBarActivity时,会发现提示已经过时。
        </div>
            </div>

猜你喜欢

转载自blog.csdn.net/liutaiyi8/article/details/80715743