Android 将数据从activity-1的recyclerview适配器传递到activity-2的viewpager片段

Android 将数据从activity-1的recyclerview适配器传递到activity-2的viewpager片段,android,android-fragments,android-recyclerview,android-viewpager,Android,Android Fragments,Android Recyclerview,Android Viewpager,我的recyclerView适配器-活动-1 这里我使用setArguments()将参数发送到ViewPager Fragmnet 活动-2包含ViewPager-选项卡布局 public class JobCardViewActivity extends AppCompatActivity { private ViewPager mViewPager; private Toolbar mToolbar; private JobCardViewVPAdapter mViewPagerAda

我的recyclerView适配器-活动-1

这里我使用setArguments()将参数发送到ViewPager Fragmnet

活动-2包含ViewPager-选项卡布局

public class JobCardViewActivity extends AppCompatActivity {


private ViewPager mViewPager;
private Toolbar mToolbar;
private JobCardViewVPAdapter mViewPagerAdapter;
private TabLayout mTabLayout;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_job_card_view);

    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);

    //set TabLayout
    setViewPager();


}

private void setViewPager() {
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPagerAdapter = new JobCardViewVPAdapter(getSupportFragmentManager());
    mViewPager.setAdapter(mViewPagerAdapter);

    mTabLayout = (TabLayout) findViewById(R.id.tab);
    mTabLayout.setupWithViewPager(mViewPager);
    mTabLayout.getTabAt(0).setIcon(R.drawable.ic_home_white_24dp);
}
}

我的viewPager适配器

公共类JobCardViewVPAdapter扩展FragmentStatePagerAdapter{

private static int TAB_COUNT = 6;

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

@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            return DetailsFragment.newInstance();
        case 1:
            return WorkActivitiesFragment.newInstance();
        case 2:
            return DocumentsFragment.newInstance();
        case 3:
            return TasksFragment.newInstance();
        case 4:
            return WorkImagesFragment.newInstance();
        case 5:
            return NotesFragment.newInstance();
    }
    return null;
}

@Override
public int getCount() {
    return TAB_COUNT;
}

@Nullable
@Override
public CharSequence getPageTitle(int position) {
    switch (position) {
        case 1:
            return WorkActivitiesFragment.TITLE;
        case 2:
            return DocumentsFragment.TITLE;
        case 3:
            return TasksFragment.TITLE;
        case 4:
            return WorkImagesFragment.TITLE;
        case 5:
            return NotesFragment.TITLE;
    }
    return super.getPageTitle(position);
}
}

我的ViewPager片段类

这里我从getArguments()


1.您可以对片段使用单个对象(singleton)

在你的碎片使用中

private static DetailsFragment ourInstance = new DetailsFragment();

public static DetailsFragment newInstance() {

    return ourInstance;
}
在您的
onBindViewHolder()
中,使用

 DetailsFragment detailsFragment =  DetailsFragment.newInstance();

 detailsFragment.setArguments(bundle);
2.或者,在活动之间传递数据

在您的
onBindViewHolder()
中,使用

 Intent intent = new Intent(context, JobCardViewActivity.class);
 intent.putString("project",  jobCardLists.get(position).getProject());
 context.startActivity(intent);
而且呢,

1.在
JobCardViewActivity
中,获取字符串并保存它

myString=getIntent().getString("project"); //public String myString;
2.在片段中,使用保存的字符串

tvProjectName.setText(((JobCardViewActivity)getActivity()).myString);

在适配器中,您正在初始化包含数据的
detailsFragment对象。但是在pageradapter中,返回的是
DetailsFragment.newInstance()//创建新对象。你没有返回
details碎片对象
你在做什么,伙计。您正在为片段的新实例设置参数。您必须保存使用viewpager实例化的片段实例。然后你可以很容易地设置任何数据,比如fragment.setData(“任何数据”)。谢谢,我是android的初学者。我从教程中学习了这个viewPager,所以我不太在乎@JyotiJK你能告诉我如何将
detailsFragment对象
传递到
detailsFragment
你能发布startactivity()CallUpdate我的onBindViewHolder()项目的代码吗<代码>意图意图=新意图(上下文,JobCardViewActivity.class);背景。开始触觉(意图)@jyotijk感谢它的工作。但是在
private static DetailsFragment-ourInstance=new DetailsFragment()处有一个警告
表示不要将Android上下文类放在静态字段中(对DetailsFragment的静态引用,其字段视图指向视图);这是一个内存泄漏(也破坏了即时运行)这是一个大问题吗?我认为,最好选择第二个。因为导致内存泄漏的代码是无效的
myString=getIntent().getString("project"); //public String myString;
tvProjectName.setText(((JobCardViewActivity)getActivity()).myString);