2017-06-28 3 views
-1

Dies scheint ein häufiges Problem mit vielen akzeptierten Antworten, aber keiner von ihnen scheint für mich arbeiten.Symbolleiste in Fragment crasht App beim Start

meisten Antworten deuten darauf hin, dieses Stück Code unter Verwendung einer Symbolleiste in ein Fragment hinzuzufügen:

mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar); 
    if (mToolbar != null) { 
     ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar); 
    } 

Ach, das noch meine App abstürzt, obwohl ich AppCompatActivity bin mit. Ich denke, der Fehler kann in der Tatsache liegen, dass meine Fragment-Klasse Fragment und nicht AppCompatAktivität erweitert, aber ich weiß noch nicht genug über Android, um sicher zu sein. Es stürzt in der setSupportActionBar-Zeile ab.

Mein Fragment Code:

package erikligai.ribbitapplication; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

/** 
* Created by erik on 2017-06-07. 
*/ 

public class MessageFragment extends Fragment { 

    Toolbar mToolbar; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
//  return inflater.inflate(R.layout.message_fragment_layout, container, false); 
     View rootView = inflater.inflate(R.layout.message_fragment_layout, container, false); 

     mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar); 
     if (mToolbar != null) { 
      ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar); 
     } 

     return rootView; 
    } 

Vorschläge schätzen würde.

+0

Ich gehe davon aus, dass Sie Nullpointer haben. Warum versuchen Sie, die Symbolleiste aus der Fragmentansicht zu entfernen? – fbwnd

+0

poste deine logcat. – SripadRaj

+0

Delegieren Sie auch die Toolbar Inflation auf Aktivität und nicht das Fragment –

Antwort

1

Sie benötigen eine Aktivität von getActivity() zu AppCompatActivity

((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(); 

Toolbar werfen aus Activity bekommen, nicht von Fragment

mToolbar = (Toolbar)rootView.findViewById(R.id.toolbar);