Tại sao ActionBarActivity không được dùng nữa


121

Tôi đã cài đặt Android Studio mới và tôi bắt đầu mã hóa một hoạt động để mở rộng ActionBarActivityvà nó cho thấy rằng nó không được dùng nữa. Vậy làm cách nào khác để tôi thiết lập thanh tác vụ cho hoạt động của mình. Ngoài ra, Đào tạo Bắt đầu sử dụng ActionBarActivitymà không cần tham chiếu mà nó đã không còn được dùng nữa.




16
Kể từ appcompat-v7-r21.1.0, logic có phần thay đổi và trên hết ActionBarActivitylà bây giờ AppCompatActivity. Không có sự khác biệt giữa hai điều này theo quan điểm của bạn.
Eugen Pechanec

1
ActionBarActivity bị xóa vì thư viện hỗ trợ 26.0.0-beta2 developer.android.com/sdk/support_api_diff/26.0.0-beta2/changes/…
ישו

Câu trả lời:


120

ActionBar không được dùng nữa kể từ khi Toolbarđược giới thiệu. Toolbarcó thể được xem như là một 'tập hợp siêu' của bất kỳ thanh hành động nào. Vì vậy, 'cũ' ActionBarbây giờ là một ví dụ của a Toolbar. Nếu bạn muốn có chức năng tương tự nhưng không có cảnh báo không dùng nữa, hãy làm như sau:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
if (toolbar != null) {
    toolbar.setTitle(R.string.app_name);
    setSupportActionBar(toolbar);
}

Bạn cần xác định Toolbarxml trong bố cục của mình:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>

Với chức năng mới này, bạn có thể tạo tùy chỉnh của riêng mình ActionBarvà để Android thực hiện công việc nặng nhọc. Chỉ cần tạo chế độ xem tùy chỉnh của riêng bạn mở rộng từ Toolbar.


Ngoài ra, bạn nên sử dụng AppCompatActivitythay vì ActionBarActivity, nó đã được giới thiệu trong phiên bản mới nhất của thư viện appcompat. Vì vậy, đừng quên cập nhật gradle

compile 'com.android.support:appcompat-v7:22.1.1'

9
Nó có đơn giản như trao đổi extends ActionBarActivityvới extends AppCompatActivity?
Ehtesh Choudhury

9
Bên trong có một số thay đổi, nhưng giao diện giống hệt nhau. Vì vậy, nó dễ dàng như chỉ cần thay thế loại hoạt động.
Endran

61
Thật tệ khi trình hướng dẫn Android Studio vẫn mở rộng ActionBarActivity và sau đó cho bạn biết nó không được dùng nữa. Họ thậm chí có giao tiếp nội bộ @Google không?
Boy

Không phải là giải pháp hoàn hảo. Câu trả lời cho ActionBar của bạn không dành cho ActionBarActivity. Tôi sẽ đi với @DroidMind Solution
Shabbir Dhangot

Tuyệt vời, nhiều công việc hơn một lần nữa. Giống như thiết kế của họ để khuyến khích mọi người sử dụng Fragment. Các nguyên tắc thiết kế của Google rất phù hợp cho các công ty có 10 người làm việc trên cùng một ứng dụng.
Muz


7

Câu trả lời này cung cấp một cách đơn giản để loại bỏ thông báo lỗi. Bạn có thể xem như một sự bổ sung cho những người khác '.

Khi chúng ta thay đổi lớp Activity cha: ActionBarActivitysang AppCompatActivitylớp thông báo lỗi sẽ biến mất.

Bạn có thể bấm vào đây để biết thêm thông tin.


1
điều này có vẻ giống như một bổ sung cho bất kỳ ai khác?
Noah Herron
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.