Android 将viewpager中的一个片段替换为另一个片段

Android 将viewpager中的一个片段替换为另一个片段,android,android-viewpager,fragment,Android,Android Viewpager,Fragment,我无法显示我的新片段。基本上我所做的是我有一个viewpager有3个页面,在第二个页面中我隐藏了当前片段并添加了一个新的片段。一切都很顺利,只是我看不到我的新碎片 My Mainactivity.java public class MainActivity extends AppCompatActivity { ViewPager viewPager = null; NavigationDrawerFragement drawerFragement; Bitmap image = n

我无法显示我的新片段。基本上我所做的是我有一个viewpager有3个页面,在第二个页面中我隐藏了当前片段并添加了一个新的片段。一切都很顺利,只是我看不到我的新碎片

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

这是我第二页的第一页

        FragmentManager fragmentManager2 = getFragmentManager();
        FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction();
        InvitedEventsFragment fragment2 = new InvitedEventsFragment();
        fragmentTransaction2.hide(EventFragment.this);          
        fragmentTransaction2.add(R.id.viewpager, fragment2);
        fragmentTransaction2.commit();
My 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;
} }
我的活动\u邀请\u事件\u 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>


有人能告诉我为什么新片段中没有显示任何内容。

如果您使用的是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);
    }
}
导入android.app.Fragment;
导入android.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.ViewPager;
导入java.util.List;
公共类ExampleAdapter扩展了FragmentPagerAdapter
{
列表碎片列表;
公共示例适配器(FragmentManager fm,列表fragmentList)
{
超级(fm);
this.fragmentList=碎片列表;
}
@重写公共片段getItem(int位置)
{
返回碎片列表。获取(位置);
}
@重写公共int getCount()
{
返回fragmentList.size();
}
公共无效删除项(内部位置,视图寻呼机)
{
pager.setAdapter(空);
此.fragmentList.remove(位置);
寻呼机设置适配器(此);
}
}

我还在编辑后的答案中添加了我的mainactivity类,你能告诉我如何触发此方法吗?你使用的是android.support.v4.app.FragmentPagerAdapter吗?是的,使用的是android.support.v4.app.FragmentPagerAdapter。如何从片段内部触发此删除项方法?你可以在活动。从片段中调用getActivity(),或者更好的是调用接口回调。