gpt4 book ai didi

android - 通过 bundle 将 ViewPager Activity 中的值发送到 Fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:19 25 4
gpt4 key购买 nike

我有一个 ViewPager Activity 调用表示幻灯片布局的 fragment 。

我需要的是按包将值从 Activity 传递到 fragment 。我该怎么做?我尝试在 onCreate() 中传递一个 int 2 但不起作用,我

Activity :

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_slide);
Intent intent = new Intent(this,ScreenSlidePageFragment.class);
Bundle bundle = new Bundle();
bundle.putInt("SIDE",2);
intent.putExtras(bundle);
/**
* Instantiate a ViewPager and a PagerAdapter
*/

mPager = (ViewPager)findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mPagerAdapter);
mPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
if(itemOld > arg0){
auxBack--;
SIDE=1;
}
else if(itemOld < arg0){
auxFront++;
SIDE=0;
}
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}
});
}

@Override
public void onBackPressed(){
if(mPager.getCurrentItem()==0){
super.onBackPressed();
}else{
mPager.setCurrentItem(mPager.getCurrentItem()-1);
}
}


/**
* A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in sequence
*/

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter{
public ScreenSlidePagerAdapter(FragmentManager fm){
super(fm);
}

@Override
public ScreenSlidePageFragment getItem(int arg0) {
return new ScreenSlidePageFragment();
}

@Override
public int getCount() {
//Toast.makeText(getApplicationContext(), "Num pages " + NUM_PAGES, Toast.LENGTH_LONG).show();
return NUM_PAGES;
}
}

fragment :

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle    savedInstanceState) {

int tID = ((ScreenSlidePagerActivity)getActivity()).getIntent().getExtras().getInt("SIDE");
Toast.makeText(getActivity(), "Side selected....." +tID, Toast.LENGTH_LONG).show();

最佳答案

您必须通过 setArguments() 方法而不是 Intent 来设置您的 Bundle。如果您有 ViewPager,则可以将参数传递给 PagerAdapter,并在实例化 Fragment 时设置参数。

我不明白你的 SIDE 是如何计算的,它是什么意思,所以我展示了一般的 ide。

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen_slide);
Bundle bundle = new Bundle();
bundle.putInt("SIDE",2);
mPager = (ViewPager)findViewById(R.id.pager);
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(), bundle);
mPager.setAdapter(mPagerAdapter);
}


private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter{

private final Bundle fragmentBundle;

public ScreenSlidePagerAdapter(FragmentManager fm, Bundle data){
super(fm);
fragmentBundle = data;
}

@Override
public ScreenSlidePageFragment getItem(int arg0) {
final ScreenSlidePageFragment f = new ScreenSlidePageFragment();
f.setArguments(this.fragmentBundle);
return f;
}

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

fragment

@Override
public void onCreate(Bundle state) {
super.onCreate(state);
final Bundle args = getArguments();
final int side = args.getInt("SIDE");
}

关于android - 通过 bundle 将 ViewPager Activity 中的值发送到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com