2016-01-19 15 views
13

Desidero impostare la barra degli strumenti sulla mia attività che estende FragmentActivity. So che per utilizzare il metodo setSuppoertActionBar(toolbar) estendiamo AppCompatActivity anziché FragmentActivity ma sostituisco il metodo onMenuItemSelected(int featureId, MenuItem item) che è definitivo in AppCompatActivity e che il metodo finale non può sovrascrivere. quindi sono limitato all'estensione FragmentActivity.come impostare la barra degli strumenti su FragmentActivity?

Ecco il mio codice:

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); 
    } 

ho visto molte risposte legate a questa domanda, ma tutti dicono estende AppCompatActivity invece di FragmentActivity ma voglio impostare barra degli strumenti, nonché di override onMenuItemSelected(int featureId, MenuItem item) metodo.

cosa devo fare, per favore aiutatemi.

+4

Hai già provato 'onOptionsItemSelected'? – Shvet

+1

sì, ho capito, ho trovato la mia soluzione con il tuo suggerimento. Estendo AppCompatActivity anziché FragmentActivity e modificato il metodo onMenuItemSelected() con il metodo onOptionsItemSelected(). Grazie :) –

risposta

5

uso questo: -

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

quindi utilizzare questo: -

@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

È inoltre possibile creare il proprio toolbar:

Prima impostare il tema principale per estendere Theme.AppCompat.Light.NoActionBar

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

</style> 

Ricordarsi di applicare il tema:

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

poi in xml 's tuoi Activity è possibile impostare il proprio personalizzato toolbar:

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

dove @layout/my_toolbar può apparire come segue:

<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"); 
Problemi correlati