2016-01-19 10 views
13

設定したいツールバー私の活動にはというフラグメンツアクティビティがあります。私はsetSuppoertActionBar(toolbar)メソッドを使用するため、FragmentActivityの代わりにAppCompatActivityを拡張しますが、の最後のonMenuItemSelected(int featureId, MenuItem item)メソッドをオーバーライドし、最後のメソッドはオーバーライドできません。だから私は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

ええ、私はそれを得た、私はあなたの提案で私の解決策を見つけた。私はFragmentActivityではなくAppCompatActivityを拡張し、onMenuItemSelected()メソッドをonOptionsItemSelected()メソッドで変更しました。ありがとう:) –

答えて

5

使用この: -

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

この1使用: - あなたはまた、独自のtoolbarを作成することができます

@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

を:

は、まずメインテーマを設定延長するTheme.AppCompat.Light.NoActionBar

はこのように見えるかもしれ

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

独自のカスタム toolbarを設定することができ、あなたの ActivityのXMLで、その後

@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> 

は、テーマを適用することを忘れないでください

<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"); 
関連する問題