30/09/2018, 17:36

Tại sao android support library v7 deprecated actionbar

Có đọc tài liệu trên http://developer.android.com/guide/topics/ui/actionbar.html thấy v7 hỗ trợ actionbar từ android 2.1 mà khi tạo project android 2.3 thì nó báo deprecated ationbar.

Stack trace

java.lang.NoSuchFieldError: action_bar
at android.support.v7.internal.widget.ActionBarContainer.onFinishInflate(ActionBarContainer.java:83)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:814)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:809)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:782)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at com.android.layoutlib.bridge.bars.BridgeActionBar.(BridgeActionBar.java:84)
at com.android.layoutlib.bridge.bars.AppCompatActionBar.(AppCompatActionBar.java:56)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.createActionBar(RenderSessionImpl.java:1691)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:362)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:321)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:497)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:485)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:485)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:590)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Mai Anh Dũng viết 19:44 ngày 30/09/2018

Đạt đã trả lời tương tự câu hỏi này ở đây

Lỗi này là lỗi nào thế @hieuhddev? Nếu là cái ActionBarActivity bị gạch đi thì không phải là lỗi, đó chỉ là "warning". Ở phiên bản Android hiện tại thì ActionBarActivity không còn được sử dụng nữa mà thay vào đấy là AppCompatActivity. Bạn sửa theo commit này của mình.
Hoàng Long viết 19:44 ngày 30/09/2018

Nếu sửa thì cũng có coi mấy hướng dẫn sửa oy. Mà sao em thấy nó ghi hỗ trợ cái actionbar từ 2.1 mà không được

Mai Anh Dũng viết 19:45 ngày 30/09/2018

Anh không hiểu ý em muốn nói?

Hoàng Long viết 19:45 ngày 30/09/2018

ý em là lý do tại sao lại gạch actionbar.em xem trên cái link kia thấy từ android 2.1 đã hỗ trợ rồi mà
The ActionBar APIs were first added in Android 3.0 (API level 11) but they are also available in the Support Library for compatibility with Android 2.1 (API level 7) and above.

Mai Anh Dũng viết 19:51 ngày 30/09/2018

Gạch có nghĩa là đã cũ, không nên dùng nữa. Developer nên sử dụng cái mới hơn.

Deprecated có nghĩa là vẫn dùng được, nhưng không nên dùng nữa vì nó sẽ sớm bị loại bỏ. Hãy dùng cái khác.

Vu Duy viết 19:36 ngày 30/09/2018

Bây giờ chuyển qua dùng Toolbar rồi bạn, và dùng AppCompatActivity. Cái ActionBarActivity này khá cũ rồi.

Bài liên quan
0