2017-04-23 38 views
1

我得到了这个代码,用于在Android Java中使用导航抽屉来更改碎片。只需遵循Google官方开发者帖子和其他页面,但它仍然无效。只是页面的标题改变而不是布局。请告诉我为什么,我不会问我是否尝试过很多并阅读其他帖子。更改片段。为什么它不起作用

因此,这里是我的代码: 在任务列表的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); 

} 

MainActivity的Java文件

@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 

); 

在任务列表XML文件

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

回答

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); 

} 

以上是错误的,换货政...膨胀的布局和删除可以为空。

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

} 
+0

你触发了默认onCreateView导致什么 – Remario

+0

视图不能不能为空,这样标注是错误的。 – Remario

0

你必须return你自己的fragment视图。更新如下您TaskList片段:

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

当你们回答你是否检查相同的答案是否已经存在,只是好奇,因为我已经发布了答案。 – Remario

+0

也告诉该方法它可以为空是不正确的,一个片段不能为空。 – Remario

相关问题