2016-07-08 9 views
-1

Dies ist das FragmentOne.java
Paket piestudio.opinion;Fehler: kann keine Symbolmethode finden findViewById (int)

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.view.MenuItem; 

/** 
* Created by jene on 7/4/2016. 
*/ 
public class FragmentOne extends Fragment{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){ 

      public boolean onNavigationItemSelected(MenuItem Item){ 
       int id = Item.getItemId(); 

      if(id == R.id.toi) { 
       DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
       FragmentOne FragmentOne = new FragmentOne(); 
       FragmentManager.beginTransaction() 
         .add(R.id.content_frame,FragmentOne,"Times of India") 
         .commit(); 
       drawer.closeDrawer(navigationView); 
      } 
       DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
       drawer.closeDrawer(GravityCompat.START); 
       return true; 
      } 
     }); 
    } 
} 

Ich erhalte diesen Fehler

Fehler: (19, 64) Fehler: kann nicht finden, Symbol Methode findViewById (int) Fehler: (27, 54) Fehler: kann nicht Symbol Methode findViewById finden (int) Fehler: (29, 32) Fehler: nicht statische Methode begintransaction() kann nicht von einer statischen Kontext Fehler verwiesen werden: (37, 54) Fehler: nicht Symbol Methode findViewById (int)

+0

Da diese Klasse ist Du Fragment Layout in Ihrer onCreate Methode Ressource nicht. Layout, das nach Ihrer onCreateView erstellt wurde, in der Sie die Ansicht erstellen. Unten ist Fragment Lebenszyklus.https: //developer.android.com/guide/components/fragments.html#Creating –

Antwort

1

Fragment finden habe keine Methode

findViewById

Sie müssen Ansicht erhalten und diese Methode verwenden. Überprüfen Sie diese findViewById in Fragment

Plus in Fragmenten Arbeit mit Ansicht sollte in/nach onCreateView Methode des Fragment Lebenszyklus nach dem Aufblasen Fragment Layout sein.

1

Sie können wie folgt tun:

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    View content = view.findViewById(R.id.content); 
} 
0

ändern unterhalb der Linie eins nach dem anderen

Schritt 1:

final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 

dieser

final NavigationView navigationView = (NavigationView)getView().findViewById(R.id.nav_view); 

Schritt 2:

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

dieser

DrawerLayout drawer = (DrawerLayout)getView().findViewById(R.id.drawer_layout); 

Schritt 3:

Ändern Sie diese

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

zu diesem

DrawerLayout drawer = (DrawerLayout)getView().findViewById(R.id.drawer_layout); 

Verwenden Sie getView(). Dies gibt die Grundansicht für das Fragment zurück, mit der Sie findViewById() aufrufen können.

0

Machen Sie es wie diese,

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ViewGroup root = (ViewGroup) inflater.inflate(R.layout.visited_task, null); 

final NavigationView navigationView = (NavigationView) root.findViewById(R.id.nav_view); 

return root; 
Verwandte Themen