单击recyclelerview项

时间:2016-03-12 09:04:30

标签: java android android-fragments android-viewpager

我在一个活动中有一个ViewPager。一切都按预期工作

这是在活动的onCreate(Bundle savedInstanceState)

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

我有一个片段,其中包含列出一些项目的RecyclerView。这是应该发生的事情: 当我点击某个项目时,它应该显示DetailsFragment。 这是我用户点击某个项目时的代码:

FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
Fragment indi=DetailsFragment.newInstance();
ft.add(R.id.(Fragment Container ID), indi);
ft.show(indi).commit();

我试过这个:

FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
Fragment indi=DetailsFragment.newInstance();
ft.replace(R.id.(Activity Container ID), indi);
ft.show(indi).commit();

而且:

FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
Fragment indi=DetailsFragment.newInstance();
ft.replce(R.id.(Container Fragment ID), indi);
ft.show(indi).commit();

Android会创建片段,因为我在DetailsFragment内部设置了onResume()方法的登录但是它没有显示 我的所有尝试都给了我相同的结果,片段被创建但没有任何显示。 并且没有错误日志

1 个答案:

答案 0 :(得分:0)

试试这个:

FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
Fragment indi=DetailsFragment.newInstance();
ft.replace(R.id.container, indi);
ft.commit();

R.id.container是您要删除的布局的资源ID,以便将DetailsFragment放在其位置时。您可以在main_activity.xml(或您正在进行的任何其他活动)中使用简单的FrameLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".activities.MainActivity">

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
        // you can put anything else here

</LinearLayout>