2015-07-03 123 views
0

我無法顯示我的新片段。基本上我在做什麼是我有一個viewpager有3頁,在第二頁我隱藏當前片段並添加一個新的。除了我看不到我的新片段之外,一切都完美無缺。在viewpager中用另一個片段替換一個片段

我Mainactivity.java

public class MainActivity extends AppCompatActivity { 
ViewPager viewPager = null; 
NavigationDrawerFragement drawerFragement; 
Bitmap image = null; 
int notificationExtra = 0; 
int nid=0; 
Toolbar toolbar; 

private void startGetLocationService() { 
     Intent i = new Intent(this, GetUserLocationService.class); 
     startService(i); 
    } 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_register);  
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.app_bar);   
    setSupportActionBar(toolbar); 

    drawerFragement = (NavigationDrawerFragement) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer); 
    drawerFragement.setUp((DrawerLayout) findViewById(R.id.drawer_layout),toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
    getSupportActionBar().setHomeButtonEnabled(false); 

    //getSupportActionBar().setIcon(R.drawable.account); 
    getSupportActionBar().setTitle("Eventyze"); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(new MyAdapter(getSupportFragmentManager())); 

    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);  

    tabs.setViewPager(viewPager); 
} 


class MyAdapter extends FragmentPagerAdapter { 

    public MyAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int i) { 

     Fragment fragment = null; 
     if (i == 0) 
      fragment = new ReminderFragment(); 
     if (i == 1) 
      fragment = new EventFragment(); 
     if (i == 2) 
      fragment = new InvitationFragment();       
     return fragment; 
    }   

    @Override 
    public CharSequence getPageTitle(int position) { 

     if (position == 0) 
      return "Reminders"; 
     if (position == 1) 
      return "Events"; 
     if (position == 2) 
      return "Invitations"; 

     return null; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return 3; 
    } 

} 

@Override 
protected void onResume() {  
    super.onResume(); 
    if(notificationExtra==1){ 
     viewPager.setCurrentItem(2); 
    } 
} 

}

在我的第2頁的onclick。

 FragmentManager fragmentManager2 = getFragmentManager(); 
     FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction(); 
     InvitedEventsFragment fragment2 = new InvitedEventsFragment(); 
     fragmentTransaction2.hide(EventFragment.this);   
     fragmentTransaction2.add(R.id.viewpager, fragment2); 
     fragmentTransaction2.commit(); 

我InvitedEventsFragment.java

public class InvitedEventsFragment extends Fragment { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

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

我activity_invited_events_fragment.xml

<LinearLayout 
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:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@android:color/black"> 

    <Button 
    android:id="@+id/btn" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/appbarcol2" 
    android:text="New Fragment" 
    android:textAllCaps="true" 
    android:textColor="@android:color/white" 
    android:textStyle="bold" />  </LinearLayout> 

誰能告訴我,爲什麼它不顯示任何我的新片段。

回答

0

如果您使用的是ViewPager,則適配器應該管理碎片。

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 

import java.util.List; 

public class ExampleAdapter extends FragmentPagerAdapter 
{ 
    List<Fragment> fragmentList; 

    public ExampleAdapter(FragmentManager fm, List<Fragment> fragmentList) 
    { 
     super(fm); 
     this.fragmentList = fragmentList; 
    } 

    @Override public Fragment getItem(int position) 
    { 
     return fragmentList.get(position); 
    } 

    @Override public int getCount() 
    { 
     return fragmentList.size(); 
    } 

    public void removeItem(int position, ViewPager pager) 
    { 
     pager.setAdapter(null); 
     this.fragmentList.remove(position); 
     pager.setAdapter(this); 
    } 
} 
+0

我還添加了我的MainActivity類別中編輯的答案,u能告訴我如何,我會觸發這個方法 –

+0

是否使用android.support.v4.app.FragmentPagerAdapter? –

+0

yup使用android.support.v4.app.FragmentPagerAdapter –