ActionBarActivity에 비해 AppCompatActivity의 향상된 기능은 무엇입니까?


164

android.support.v7.app.AppCompatActivity 어제 새로운 기능으로 최신 v7 지원 라이브러리에 추가되었습니다.

상기되어 ActionBarActivity새로운 찬성에서 사용되지 AppCompatActivity및 그 AppCompatActivity지원 라이브러리 작업 표시 줄 기능을 사용하여 활동에 대한 기본 클래스입니다. 그래서, 새로운 기능이 무엇인가 AppCompatActivity이상은 ActionBarActivity? 무엇 향상을 AppCompatActivity통해이 ActionBarActivity? 그리고 장점은 AppCompatActivity무엇입니까? 누군가 몇 개의 샘플을 공급할 수 있습니까?

모든 팁을 부탁드립니다. 그리고 미리 감사드립니다.

추신 : 나를 가장 놀라게 AppCompatActivityandroid.support.v4.app.FragmentActivity것은에서 직접 확장 된 클래스입니다 ActionBarActivity! 내 말은 실제로 ActionBarActivity할 수있는 일을 AppCompatActivity할 수 있다는 것을 의미합니다 . 왜 안드로이드가 후자를 밀어 냈습니까?

한편, 나는 상태가 블로그 게시물을 보았다 : " 그것은에서 이름 바꾸기 아니다 ActionBarActivity으로 AppCompatActivity, 내부 논리 AppCompat를 통해 사용할 수 있습니다를AppCompatDelegate ", 그래서 "무엇 내부 로직 의" AppCompat? 무엇을 할 AppCompatDelegate수 있습니까? 누군가 이것에 대한 코드를 게시 할 수 있습니까?



나는 그것을 읽었고, 그것은 너무 얕은 소개입니다.
SilentKnight

1
AppCompatActivity는 ActionBarActivity의 상위 클래스입니다. 그리고 더 많은 아이디어를 얻으려면 코드를 살펴 봐야합니다.
Pankaj Kumar

그렇습니다.
SilentKnight

답변:


145

Chris가 쓴 것처럼, 더 이상 사용되지 않는 새로운 버전 ActionBarActivity(하나의 확장 AppCompatActivity클래스)은 이전 버전과의 호환성 클래스를 사용하는 것이 안전합니다. 사용 중단은 new를 AppCompatActivity직접 사용하도록 요청하는 힌트 일뿐 입니다. 내부적으로 클래스 AppCompatActivity를 사용하는 새롭고보다 일반적인 구현입니다 AppCompatDelegate.

새로운 개발을 시작하면 AppCompatActivity바로 새로운 클래스 를 사용해야합니다 . 앱을 업데이트 할 기회가 있다면 ActionBarActivity새로운 활동으로 인해 더 이상 사용되지 않습니다 . 그렇지 않으면 더 이상 사용되지 않는 활동을 유지할 수 있으며 동작에 전혀 차이가 없습니다.

에 관해서는 AppCompatDelegate, 당신이도 아니다 활동에 새로운 색을 칠한 위젯을 가질 수 AppCompatActivity없고 ActionBarActivity.

예를 들어 외부 라이브러리에서 액티비티를 상속받습니다.이 라이브러리는 상속 되지 않지만AppCompatActivity 이 액티비티에 재질 위젯 (보기)을 표시하려고합니다. 이를 위해서는 AppCompatDelegate액티비티 내부 의 인스턴스를 만들고 addContentView(), setContentView()등 의 해당 액티비티의 메소드를 재정의해야하며 (메소드의 AppCompatDelegate전체 목록 은 javadoc 참조 ) 재정의 된 메소드 내부에서 호출을 내부 AppCompatDelegate인스턴스 로 전달해야합니다 . AppCompatDelegate나머지는 할 것이고 "구식"활동은 "구체화"될 것입니다.


좋은 예 .. 감사합니다 @ sergej shafarenka
Rakesh L

2
Appcompactivity 대신 Activity를 사용할 때 어떤 일이 발생하는지 말해 주실 수 있습니까? 검색했지만 해결책을 얻지 못했습니다. 도와주세요
Ravindra Kushwaha

35

대부분 이름이 바뀌 ActionBarActivity었습니다. 현재 모든 것을 설명하지는 않습니다. 원한다면 안전하게 사용할 수 있습니다 ActionBarActivity. 심볼릭 링크처럼 생각하십시오.


AppCompatActivity의 직접 부모 클래스는 ActionBarActivity이제 ActionBarActivity무엇을 AppCompatActivity할 수 Android있습니까? 왜 나중에 나옵니까?
SilentKnight

4
@SilentKnight : Chris가 쓴 것처럼 대부분 이름이 바뀌 었습니다. Android 개발자 블로그 인용 : "AppCompat 지원 라이브러리는 겸손하지만 중요한 시작으로 시작되었습니다. 모든 API 7 이상 장치를위한 일관된 단일 작업 표시 줄. 개정 21에서는 재료 색상 팔레트 가져 오기, 위젯 틴팅, 툴바 지원 및 모든 API 7+ 기기에 더 많은 기능을 제공합니다.이를 통해 ActionBarActivity라는 이름이 실제로 수행 한 전체 범위를 다루지는 못했습니다. "
CommonsWare

3
그것은이다 안전하지 가 향후 버전에서 제거 될 수 있습니다 때문에, 사용되지 않는 클래스. ActionBarActivity지원 라이브러리에서 삭제 된 경우 (예 : 앱 업데이트)에 대한 모든 참조를 쉽게 바꿀 수는 있지만 지금부터는 사용하지 않는 것이 좋습니다.
david.schreiber

12

AppCompat 지원 라이브러리는 겸손하지만 중요한 시작으로 시작되었습니다. 모든 API 7 이상 장치를위한 일관된 단일 작업 표시 줄입니다. 개정 21에서는 모든 색상의 API 7+ 장치에 재질 색상 팔레트, 위젯 틴팅, 툴바 지원 등을 제공 하는 새로운 책임을 맡았습니다 . 이를 통해 ActionBarActivity라는 이름은 실제로 수행 한 전체 범위를 다루지 않았습니다 .

http://android-developers.blogspot.it/2015/04/android-support-library-221.html


.. Appcompactivity 대신 Activity를 사용할 때 어떤 일이 발생하는지 알려주십시오. 검색했지만 해결책을 얻지 못했습니다. 도와주세요
Ravindra Kushwaha

9

AppCompatActivityAndroid 지원 appcompat 라이브러리 출시 이후 Android-SDK 에 도입되었습니다 .

AppCompatActivity의 직접적인 자식 클래스 인 FragmentActivity지원 V4와의 직접적인 부모 클래스의 ActionBarActivity.

AppCompatActivity지원 라이브러리 조치 표시 줄 기능 을 사용하는 활동의 기본 클래스입니다 .

ActionBar활동에 대한이 클래스를 확장하고 활동 테마를 Theme.AppCompat 또는 유사한 테마 로 설정하여 API 레벨 7 이상 에서 실행할 때 활동 에을 추가 할 수 있습니다 .

v7 appcompat 라이브러리 지원과 관련하여 Action Bar 사용자 인터페이스 디자인 패턴에 대한 지원이 추가되었습니다 . 이 라이브러리는 머티리얼 디자인 사용자 인터페이스 구현을 지원합니다 .

다음은 v7 appcompat 라이브러리에 포함 된 몇 가지 주요 클래스입니다.

  • ActionBar -작업 표시 줄 사용자 인터페이스 패턴의 구현을 제공합니다.
  • AppCompatActivity- 지원 라이브러리 조치 표시 줄 을 사용하는 활동의 기본 클래스로 사용할 수있는 애플리케이션 활동 클래스를 추가합니다. 구현 .
  • AppCompatDialog-AppCompat 테마 대화 상자 의 기본 클래스로 사용할 수있는 대화 상자 클래스를 추가합니다 .
  • ShareActionProvider -작업 표시 줄에 포함될 수있는 표준화 된 공유 작업 (예 : 이메일 또는 소셜 응용 프로그램에 게시)에 대한 지원을 추가합니다.

Android Support Libraries 를 다운로드 한 후이 라이브러리는 / extras / android / support / v7 / appcompat / 디렉토리에 있습니다.


무엇에 대해 android.support.v4.app.ActivityCompat? 이게 그냥 옛 이름 AppCompatActivity입니까?
Taylan

7

이전에는 AppCompat이제 더 이상 사용되지 않는 ActionBarActivity클래스 를 통해서만 진입 할 수 있었습니다 . 불행히도 이것은 세트 활동 계층 구조를 사용하도록 강요하여 사용을 PreferenceActivity불가능하게했습니다.

자세한 내용은 chris banes의 지원 라이브러리 -v22-1-0 을 참조하십시오.


1
Chris의 블로그입니다.
SilentKnight

2

안드로이드 지원 라이브러리 22.1의 최신 릴리스는를 ActionBarActivity선호 하지 않으며 API 레벨 7 이상으로 시작하는 모든 장치에 AppCompatActivity단일 일관성 ActionBar을 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.