1

在我尝试切换片段之间,我看到它们堆叠在一起。我知道这应该通过动态添加片段来解决,但是当我尝试这些时,问题依然存在。片段重叠其他片段

这是我的SocksAndUndies类,以及我的onCreate方法(这是我FragmentActivity,包含我NavigationView)的顶部:

public class SocksAndUndies extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 
     FragmentJSON fragmentJSON; 
     FragmentTransaction ft; 

protected void onCreate(Bundle savedInstanceState) { 


    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_socks_and_undies); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    fragmentJSON = new FragmentJSON(); 
    ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.socksAndUndies, fragmentJSON, "fragmentJSON"); 
    ft.commit(); 
} 

这是我使用改变的碎片的方法:

public boolean onNavigationItemSelected(MenuItem item) { 
     FragmentTransaction ft; 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 
     if (id == R.id.nav_gallery) { 
      EventsFragment eventsFragment = new EventsFragment(); 
      ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.socksAndUndies, eventsFragment, "EventsFragment"); 
     } else if (id == R.id.nav_slideshow) { 
      ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.socksAndUndies, fragmentJSON, "fragmentJSON"); 
     ) 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true;  
} 

这是我的看法:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <FrameLayout 
     android:id="@+id/socksAndUndies" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 

回答

2

我可以在这里看到了一些问题,不知道是不是个你和你指出的一样。 在您的onNavigationItemSelected方法中,您缺少一个右括号和一条ft.commit命令。 这里是什么样子:

public boolean onNavigationItemSelected(MenuItem item) { 
    FragmentTransaction ft; 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
    ft = getSupportFragmentManager().beginTransaction(); 
    if (id == R.id.nav_gallery) { 
     EventsFragment eventsFragment = new EventsFragment();    
     ft.replace(R.id.socksAndUndies, eventsFragment, "EventsFragment"); 
    } else if (id == R.id.nav_slideshow) { 
     ft.replace(R.id.socksAndUndies, fragmentJSON, "fragmentJSON"); 
    } 
    ft.commit(); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true;  
} 
+0

对此深感抱歉,我在我的代码的那些事,我插入这个SNIPPIT到我的代码,并在它之前也做了同样的方式表现。不用找了。 –