2016-01-19 25 views
13

FragmentActivity öğesini genişleten etkinliğimde araç çubuğunu ayarlamak istiyorum. setSuppoertActionBar(toolbar) yönteminin kullanımı için FragmentActivity yerine AppCompatActivity'u genişletdiğimizi biliyorum, ancak AppCompatActivity'da son olan onMenuItemSelected(int featureId, MenuItem item) yöntemini geçersiz kıldım ve son yöntem geçersiz kılmıyor. Bu yüzden FragmentActivity genişletilmiş sınırlıdır.FragmentActivity'de araç çubuğunu nasıl belirleyebilirim?

İşte benim kodudur: Bu soruya ilişkin birçok cevaplar gördüm ama herkes söylüyor

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 yerine FragmentActivity uzanır ama elimde etkisiz onMenuItemSelected(int featureId, MenuItem item) yöntemi olarak araç çubuğu yanı ayarlamak istiyorum.

Ne yapmalıyım, lütfen yardım edin.

+4

Henüz onOptionsItemSelected özelliğini denediniz mi? – Shvet

+1

Evet anladım, çözüm önerilerinde buldum. FragmentActivity yerine AppCompatActivity öğesini genişletir ve onOptionsItemSelected() yöntemiyle onMenuItemSelected() yöntemini değiştirdim. Teşekkürler :) –

cevap

5

kullanımı bu: -:

@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

Ayrıca oluşturabilir kendi toolbar:

İlk kurmak ana temasını -

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

o zaman bu kullanmak genişletmek için Theme.AppCompat.Light.NoActionBar

Eğer kendi özel toolbar ayarlayabilirsiniz senin Activity 'nin xml sonra

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

:

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

</style> 

tema uygulamak unutmayın

: @layout/my_toolbar gibi görünebilir

<include layout="@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");