ActionBarCompat - как его использовать

Я пытаюсь использовать ActionBarCompat в своем собственном проекте. Я уже открыл образец проекта (http://developer.android.com/resources/samples/ActionBarCompat/index.html), но я не знаю, как его реализовать самостоятельно.

Я не могу найти какой-либо учебник. Должен ли я сделать этот проект библиотекой? Может кто-нибудь дать мне некоторые указания, пожалуйста.

Ответ 1

Что касается реализации, просто придерживайтесь образца кода, предоставленного в классе MainActivity.java. Вы можете найти здесь здесь или под <your local android-sdks folder>/samples/android-15/ActionBarCompat/src/com/example/android/actionbarcompat/MainActivity.java. В общем, все, что вам нужно сделать, это следующее:

  • Код ресурса меню, где вы объявляете элементы для панели действий (см. http://developer.android.com/resources/samples/ActionBarCompat/res/menu/main.html)
  • Введите команду, которая расширяет ActionBarActivity
  • Переопределить onCreateOptionsMenu() так, чтобы он надул меню, которое вы закодировали на шаге # 1
  • Переопределить onOptionsItemSelected() так, чтобы вы обрабатывали событие, когда пользователь удаляет любые элементы ActionBar, определенные вами на шаге 1.

Я думаю, что имеет смысл построить проект библиотеки Android из кода ActionBarCompat; то вы можете просто ссылаться на него из своего пользовательского проекта Android. Помните, что он лицензирован в соответствии с лицензией Apache версии 2.0.

Ответ 2

В этом ответе описывается, как использовать новую библиотеку ActionBarCompat (июль 2013 г.).

В Android Studio откройте build.gradle и добавьте следующее:

dependencies {
    compile 'com.android.support:appcompat-v7:18.0.+'
}

В Eclipse создайте проект на основе кода в sdk\extras\android\support\v7\appcompat и добавьте его в свой проект.

Действия должны расширяться ActionBarActivity.

import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.app.ActionBar;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

    ActionBar ab;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ab = getSupportActionBar();
        ab.setTitle("Test");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = 
                    (SearchView) MenuItemCompat.getActionView(searchItem);

        return super.onCreateOptionsMenu(menu);
    }
}

Темы должны быть (или продлевать) одну из тем Theme.AppCompat, например:

<activity android:theme="@style/Theme.AppCompat.Light" ... />

Источник: Как добавить ActionBarCompat в свой проект, сообщение в блоге Gabriele Mariotti