Android 将数据从activity-1的recyclerview适配器传递到activity-2的viewpager片段
我的recyclerView适配器-活动-1 这里我使用setArguments()将参数发送到ViewPager Fragmnet 活动-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
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);