0

Мне нужно расширить Activity, а не ActionBarActivity или AppCompatActivity, чтобы использовать стороннюю библиотеку.Панель инструментов при расширении Активность

Во всем приложении я использовал AppCompatActivity, чтобы легко добавить в него панель инструментов, но, видимо, я не могу сделать то же самое, если продлю Activity. Я был бы счастлив просто иметь ActionBar: это не одно и то же, но это лучше, чем ничего. Тем не менее, я не знаю, как это сделать: -/

У вас есть совет для меня? Я знаю, что это глупый вопрос, возможно, но я просто не знаю, как это сделать ...

+0

'ActionBarActivity' расширяет' Activity', поэтому ваша сторонняя библиотека должна работать с ним. С какими проблемами вы сталкиваетесь? – Nachi

+0

Мне нужно расширить OPActivity, предоставляемое приложением, чтобы использовать некоторые методы. OPActivity расширяет Activity, а не ActionBarActivity, и я не могу расширять несколько классов в Java: -/ –

+0

. Библиотека поставляется в Jar, очевидно, поэтому я не могу изменить, что «расширяет действие» в более правильном «расширяет ActionBarActivity» ;-) –

ответ

5

Прежде всего проверьте библиотеку, которую используете. Это может быть устаревшим.

С помощью нового приложения 22.1+ appcompat вы можете использовать AppCompatDelegate для расширения поддержки AppCompat для любого Activity.

Вы можете ознакомиться с официальной ссылкой на AppCompatPreferenceActivity, где вы можете найти пример этой техники.

У вас есть:

  • добавить Toolbar к вашему Activity:

Что-то вроде этого:

<android.support.v7.widget.Toolbar 
    android:id="@+id/mytoolbar" 
    android:background="?attr/colorPrimary"/> 
  • , чтобы использовать AppCompat Theme без ActionBar.

что-то вроде этого:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="colorPrimary">@color/myColor</item> 
     .... 
    </style> 
  • Добавить AppCompatDelegate в свой Activity

Что-то вроде:

public class MainActivity extends Activity implements AppCompatCallback { 

     private AppCompatDelegate delegate; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      //create the delegate   
      delegate = AppCompatDelegate.create(this, this); 

      //call the onCreate() of the AppCompatDelegate 
      delegate.onCreate(savedInstanceState); 

      //use the delegate to inflate the layout 
      delegate.setContentView(R.layout.activity_main); 

      //add the Toolbar 
      Toolbar toolbar= (Toolbar) findViewById(R.id.mytoolbar); 
      delegate.setSupportActionBar(toolbar); 
     } 

    //..... 
} 

Проверьте официальный пример, чтобы обернуть другие методы у нашей деятельности, чтобы иметь полную совместимость с AppCompatActivity.

+0

Gabriele, я думаю, что люблю тебя :-) Большое вам спасибо! –

Смежные вопросы