0

我与片段事务,使用底Bar.In我的应用程序的默认片段显示两次,当选择第二个片段其没有隐瞒工作..问题与片段交易(默认片段显示两次)

public class MainActivity extends AppCompatActivity { 
private Fragment fragment; 
private FragmentManager fragmentManager; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    fragmentManager = getSupportFragmentManager(); 
    fragment = new FragmentOne(); 
    final FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    transaction.add(R.id.output, fragment).commit(); 


    BottomBar bottomBar = (BottomBar) findViewById(R.id.bottomBar); 
    bottomBar.setOnTabSelectListener(new OnTabSelectListener() { 
     @Override 
     public void onTabSelected(@IdRes int tabId) { 
      switch (tabId){ 
       case R.id.tab_favorites: 
        Toast.makeText(MainActivity.this, "FAV", Toast.LENGTH_SHORT).show(); 
        fragment = new FragmentOne(); 
        break; 
       case R.id.tab_friends: 
        Toast.makeText(MainActivity.this, "FRIEND", Toast.LENGTH_SHORT).show(); 
        fragment = new FragmentTwo(); 
        break; 
       case R.id.tab_nearby: 
        Toast.makeText(MainActivity.this, "NEAR", Toast.LENGTH_SHORT).show(); 
        fragment = new FragmentOne(); 
        break; 
       case R.id.tab_test: 
        Toast.makeText(MainActivity.this, "TEST", Toast.LENGTH_SHORT).show(); 
        fragment = new FragmentTwo(); 
        break; 
      } 
      final FragmentTransaction transaction = fragmentManager.beginTransaction(); 
      transaction.replace(R.id.output, fragment).commit(); 
     } 
    }); 

    bottomBar.setOnTabReselectListener(new OnTabReselectListener() { 
     @Override 
     public void onTabReSelected(@IdRes int tabId) { 
     } 
    }); 
} 

enter image description here

请帮我解决这个问题 这里是我的XML布局

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.syntax.bottomtabs.MainActivity"> 
<fragment 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:name="com.syntax.bottomtabs.FragmentOne" 
     android:id="@+id/output"/> 

    <com.roughike.bottombar.BottomBar 
     android:id="@+id/bottomBar" 
     android:layout_width="match_parent" 
     android:layout_height="70dp" 
     android:layout_alignParentBottom="true" 
     app:bb_tabXmlResource="@xml/bottombar_tabs_three" /> 
</RelativeLayout> 
+0

我们提供您的XML代码,以及 –

回答

0

只需更换XML升IKE下面通过更换室内用片段相对布局.....

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.syntax.bottomtabs.MainActivity"> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:id="@+id/output"> 
</RelativeLayout> 

<com.roughike.bottombar.BottomBar 
    android:id="@+id/bottomBar" 
    android:layout_width="match_parent" 
    android:layout_height="70dp" 
    android:layout_alignParentBottom="true" 
    app:bb_tabXmlResource="@xml/bottombar_tabs_three" /> 
</RelativeLayout> 

希望这将有助于.....

+0

还有它的问题.. – Suresh

+0

谢谢它的工作很好.. – Suresh

+0

如果th e更新的答案正在工作,那么你可以将答案标记为已接受..... – Ashiq

0

不要添加片段。添加一个容器,然后用一个片段替换它。在这里,framelayout将作为容器工作。

XML代码应该是:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.syntax.bottomtabs.MainActivity"> 

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

    <com.roughike.bottombar.BottomBar 
     android:id="@+id/bottomBar" 
     android:layout_width="match_parent" 
     android:layout_height="70dp" 
     android:layout_alignParentBottom="true" 
     app:bb_tabXmlResource="@xml/bottombar_tabs_three" /> 
</RelativeLayout> 

在活动的onCreate():

FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new FragmentOne()).commit(); 

而其余代码:

bottomBar.setOnTabSelectListener(new OnTabSelectListener() { 
     final FragmentManager fm = getFragmentManager(); 
     @Override 
     public void onTabSelected(@IdRes int tabId) { 
      switch (tabId){ 
       case R.id.tab_favorites: 
        Toast.makeText(MainActivity.this, "FAV", Toast.LENGTH_SHORT).show(); 
        fm.beginTransaction().replace(R.id.content_frame, new FragmentOne()).commit(); 
        break; 
       case R.id.tab_friends: 
        Toast.makeText(MainActivity.this, "FRIEND", Toast.LENGTH_SHORT).show(); 
        fm.beginTransaction().replace(R.id.content_frame, new FragmentTwo()).commit(); 
        break; 
       case R.id.tab_nearby: 
        Toast.makeText(MainActivity.this, "NEAR", Toast.LENGTH_SHORT).show(); 
        fm.beginTransaction().replace(R.id.content_frame, new FragmentOne()).commit(); 
        break; 
       case R.id.tab_test: 
        Toast.makeText(MainActivity.this, "TEST", Toast.LENGTH_SHORT).show(); 
        fm.beginTransaction().replace(R.id.content_frame, new FragmentTwo()).commit(); 
        break; 
      } 
     } 
    });