Android 将viewpager中的一个片段替换为另一个片段
我无法显示我的新片段。基本上我所做的是我有一个viewpager有3个页面,在第二个页面中我隐藏了当前片段并添加了一个新的片段。一切都很顺利,只是我看不到我的新碎片 My Mainactivity.javaAndroid 将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
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(),或者更好的是调用接口回调。