2016-01-19 9 views
13

Ich möchte Symbolleiste auf meine Tätigkeit, die FragmentFreigabeAktivität erstreckt. Ich weiß, dass für die Verwendung setSuppoertActionBar(toolbar) Methode wir erweitert AppCompatActivity anstelle von FragmentActivity, aber ich überschreiben die onMenuItemSelected(int featureId, MenuItem item) Methode, die in AppCompatActivity final ist und endgültige Methode kann nicht überschreiben. also bin ich beschränkt auf erweitert FragmentActivity.Wie man die Symbolleiste auf FragmentActivity setzt?

Hier ist mein Code:

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

ich auf diese Frage im Zusammenhang viele Antworten sah aber jeder sagt, erstreckt AppCompatActivity statt FragmentActivity aber ich möchte Symbolleiste als Überschreibung onMenuItemSelected(int featureId, MenuItem item) Methode als auch einzustellen.

was soll ich tun, bitte helfen.

+4

Haben Sie schon 'onOptionsAtemSelected' probiert? – Shvet

+1

Ja, ich habe es, ich habe meine Lösung durch Ihren Vorschlag gefunden. Ich erweitere AppCompatActivity anstelle von FragmentActivity und ändere die onMenuItemSelected() -Methode mit der onOptionsItemSelected() -Methode. Vielen Dank :) –

Antwort

5

Verwendung dieses: -

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

dann verwenden Sie diese ein: -

@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

Sie können auch Ihre eigenen toolbar erstellen:

Zuerst das Hauptthema einrichten zu erweitern Theme.AppCompat.Light.NoActionBar

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

</style> 

Denken Sie daran, das Thema anzuwenden:

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

dann in Ihrer Activity ‚s xml Sie Ihre eigenen benutzerdefinierten toolbar einstellen:

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

wo @layout/my_toolbar wie folgt aussehen:

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