2015-02-22 21 views
25

Sto utilizzando una barra degli strumenti per sostituire ActionBar. Tutto sta andando bene con un problema:Utilizza la barra degli strumenti in tutte le attività (Android)

La barra degli strumenti mostra solo l'attività principale.

Se provo a chiamare la barra degli strumenti su qualsiasi attività nello stesso modo in cui l'ho fatto con l'attività principale, l'app si arresterà in modo anomalo quando chiamerò quell'attività.

Se provo a gonfiare la barra degli strumenti suCreateOptionsMenu, quell'attività si interromperà quando la chiamo.

Come posso chiamare/utilizzare la stessa barra degli strumenti in tutte le mie attività e non solo quella principale.

ecco alcuni pezzi di codice:

public android.support.v7.widget.Toolbar toolbar; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_about); 
    toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_id); 
    setSupportActionBar(toolbar); 
} 

Il codice precedente funziona per richiamare la barra degli strumenti con successo, ma funziona solo se lo uso su l'attività principale, il resto delle attività andrà in crash se Ho chiamato la barra degli strumenti lo stesso metodo mostrato sopra.

Qualche aiuto, per favore?

Grazie.

Modificato:

su richiesta qui più frammenti di codice:

app_bar.xml:

<?xml version="1.0" encoding="utf-8"?> 

<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="wrap_content" 
android:background="@color/actionbarbgcolor" 
app:popupTheme="@style/popUpTheme"> 

</android.support.v7.widget.Toolbar> 

themes.xml (sostituzione styles.xml):

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools"> 

<style name="DefaultActionBarTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:textColorPrimary">@color/windowbackgroundcolor</item> 
    <item name="android:windowBackground">@color/windowbackgroundcolor</item> 
</style> 

<style name="popUpTheme"> 
    <item name="android:textColor">@color/actionbarbgcolor</item> 
</style> 
</resources> 
+0

"l'applicazione si blocca quando ho chiamata che l'attività" - uso LogCat a esaminare la traccia dello stack Java associata al crash: https: // stackoverflow.it/questions/23353173/sfortunatamente-myapp-has-stopped-how-can-i-solve-this – CommonsWare

+0

Se vuoi che la barra degli strumenti sia persistente, dovresti invece utilizzare una singola attività con più frammenti. – Simas

+0

Hai inserito la barra degli strumenti in tutti i layout? Pubblica il tuo logcat. –

risposta

34

Ho trovato la soluzione, ho dimenticato di includere la barra degli strumenti nel resto dei file di layout delle attività. Quindi stavo chiamando una barra degli strumenti che non esisteva nel layout di quella attività.

L'ho solo incluso nell'attività principale, ecco perché ha funzionato lì e si è schiantato sul resto.

Per i principianti, questo significa che il codice seguente deve esistere in ogni file di layout xml si desidera la barra degli strumenti per lavorare in:

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

nota che "app_bar" è solo il nome che ho chiamato il mio barra degli strumenti con, il vostro può essere diverso

Buona fortuna.

+2

Quale layout hai avvolto toobar in app_bar.xml? – Phil

0

è possibile creare un layout con il codice di seguito che contengono barra degli strumenti

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fitsSystemWindows="true" 
    tools:context="com.tejariapp.myapplicationtester1.MainActivity"> 


    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

</android.support.design.widget.CoordinatorLayout> 

prestare attenzione al valore di altezza, se non si imposta lo wrap_content valore che si può vedere che gli altri elementi passati al di sotto della barra degli strumenti e poi in ogni layout che si desidera avere barra degli strumenti, si può semplicemente scrivere questo

<include layout="@layout/toolabar" /> 
Problemi correlati