2016-01-19 3 views
13

Я хочу установить панель инструментов о моей деятельности, которая распространяется FragmentActivity. Я знаю, что для использования метода setSuppoertActionBar(toolbar) мы продолжаем AppCompatActivity вместо FragmentActivity, но я переопределяю метод onMenuItemSelected(int featureId, MenuItem item), который является окончательным в AppCompatActivity, и окончательный метод не может переопределить. поэтому я ограничусь распространением FragmentActivity.Как установить панель инструментов на FragmentActivity?

Вот мой код:

public class MainActivity extends FragmentActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); -> error is here 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onMenuItemSelected(int featureId, MenuItem item) { 
     switch(item.getItemId()){ 
      case R.id.action_search: 
       onSearchRequested(); 
       break; 
     } 
     return super.onMenuItemSelected(featureId, item); 
    } 

Я видел много ответов, связанных с этим вопросом, но все говорят, что расширяет AppCompatActivity вместо FragmentActivity, но я хочу, чтобы установить панель инструментов, а также переопределить onMenuItemSelected(int featureId, MenuItem item) метод.

Что делать, пожалуйста, помогите.

+4

Пробовал 'onOptionsItemSelected' еще? – Shvet

+1

да, я понял, я нашел решение по вашему предложению. Я расширяю AppCompatActivity вместо FragmentActivity и меняю метод onMenuItemSelected() методом onOptionsItemSelected(). благодаря :) –

ответ

5

использование этого: -

toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 

затем использовать этот один: -

@Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 

     sfm = getSupportFragmentManager(); 
     Fragment fragment = new Fragment(); 
     int id = item.getItemId(); 

     if (id == R.id.nav_sales) { 
      fragment = new SalesFragment(); 
      toolbar.setTitle("Sales"); 
     } 
1

Вы также можете создать свой собственный toolbar:

Первый набор на главную тему для расширения Theme.AppCompat.Light.NoActionBar

<style name="style_1" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 

</style> 

Не забудьте применить тему:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    this.setTheme(R.style.style_1); 
    // ... 
} 

затем в XML ваши Activity «ы вы можете установить свой собственный toolbar:

<include layout="@layout/my_toolbar"/> 

где @layout/my_toolbar может выглядеть следующим образом:

<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/toolbar_height" 
    app:contentInsetStart="0dp" 
    app:layout_collapseParallaxMultiplier="1.0"> 

    <!-- insert your views here --> 
</android.support.v7.widget.Toolbar> 
0
First set style as 
<style name="style_1" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 

</style> 
then 

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
ActionBar actionBar = getSupportActionBar(); 
     actionBar.setTitle("Home");