2017-04-23 2 views
1

Ich habe diesen Code zum Ändern von Fragmenten mit einer Navigationsleiste in Android Java. Einfach gefolgt offizielle Googles Dev Posts und andere Seiten, aber es funktioniert immer noch nicht. Nur der Header der Seite ändert sich, aber nicht das Layout. Sag mir bitte warum, ich würde nicht fragen, ob ich nicht viel versucht habe und andere Beiträge gelesen habe.Ändern von Fragmenten. Warum funktioniert es nicht

hier ist also mein Code: In MainActivity Java-Datei

@Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     Fragment f = null; 
     Class fClass = null; 
     // Tasklist 
     if (id == R.id.nav_drawer_main_tasklist) { 
      fClass = TaskList.class; 
     } 
    try{ 
      f=(Fragment) fClass.newInstance(); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.frame_main,f).commit(); 

     item.setChecked(true); 
     setTitle(item.getTitle()); 
     // Drawer 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawerlayout_main); 
     drawer.closeDrawer(GravityCompat.START 

); 

in Tasklist Java

public class TaskList extends Fragment { 

View view; 

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

} 

in Tasklisten-XML-Datei

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="***"> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab_main_createtask" 

     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="bottom|end" 
     android:onClick="fab_main_createtask_onClick" 
     app:srcCompat="@drawable/ic_add_white_24dp" 
     tools:layout_editor_absoluteX="0dp" 
     tools:layout_editor_absoluteY="0dp" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:orientation="horizontal" 
     tools:layout_editor_absoluteX="8dp" 
     tools:layout_editor_absoluteY="8dp"> 



    </LinearLayout> 

</RelativeLayout> 

Antwort

0
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.activity_main_tasklist, container, false); 
    return super.onCreateView(inflater, container, savedInstanceState); 

} 

die oben falsch ist, retu rn das überhöhte Layout und entfernen Sie Nullable.

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

} 
+0

Sie den Standard onCreateView ausgelöst, die in nichts führt – Remario

+0

Sicht nicht sein kann, nicht null, so dass Anmerkung falsch ist. – Remario

0

Sie haben eine eigenen fragment Blick auf return. Aktualisieren Sie Ihr TaskList Fragment wie folgt:

public class TaskList extends Fragment { 

    View view; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
     view = inflater.inflate(R.layout.activity_main_tasklist, container, false); 
     return view ; 
    } 
} 
+0

wenn ihr antwortt, checkt ob die selbe antwort schon da ist, nur kurios, weil ich die antwort bereits gepostet habe. – Remario

+0

auch sagen, dass die Methode, die NULL-Werte zulässig sein können, falsch ist, ein Fragment kann nicht null sein. – Remario

Verwandte Themen