首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >bundle.getString返回空字符串

bundle.getString返回空字符串
EN

Stack Overflow用户
提问于 2019-05-12 19:01:05
回答 2查看 152关注 0票数 0

我不能理解在将参数从一个活动传递到一个片段时我哪里错了。

MyActivity.class

Bundle bundle = new Bundle();
bundle.putString("name", "helloworld");
HomeFragment homefragment = new HomeFragment();
homefragment.setArguments(bundle); 
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, homefragment).commit();

在我的代码片段中,我尝试以这种方式在onCreateView方法中获取参数,但字符串始终为空

onCreateView()

Bundle bundle = this.getArguments();
    if(bundle != null)
        mName = bundle.getString("name"); //mName here is null, checked with a simple print

//this is for the viewpager
models = new ArrayList<>();
    Resources res = getResources();
    mDescriptions = res.getStringArray(R.array.newGameDescription);
    mTitle = res.getStringArray(R.array.newGame);
    models.add(new Model(R.drawable.brochure,mTitle[0], mDescriptions[0]));
    models.add(new Model(R.drawable.sticker,mTitle[1], mDescriptions[1]));
    models.add(new Model(R.drawable.poster,mTitle[2], mDescriptions[2]));
    models.add(new Model(R.drawable.namecard,mTitle[3], mDescriptions[3]));

    adapter = new ViewPagerAdapter(getContext(), models, mName); // I pass the string value here to pass it to an activity (with putextra) after clicking on a page of the viewer

    View view = inflater.inflate(R.layout.fragment_home,container,false);
    viewPager = (ViewPager) view.findViewById(R.id.gameModeViewPager);
    viewPager.setAdapter(adapter);
    viewPager.setPadding(130,0,130,0);

    Integer[] colors_temp = {
            getResources().getColor(R.color.prova1),
            getResources().getColor(R.color.prova2),
            getResources().getColor(R.color.prova3),
            getResources().getColor(R.color.prova4),
    };

    colors = colors_temp;
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i1) {
            if (i < (adapter.getCount() - 1) && i < (colors.length -1)){
                viewPager.setBackgroundColor((Integer)argbEvaluator.evaluate(v, colors[i], colors[i+1]));
            }else{
                viewPager.setBackgroundColor(colors[colors.length -1]);
            }
        }

        @Override
        public void onPageSelected(int i) {

        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });


    return view;

在注释中被询问后添加的代码,我不会以任何方式操作字符串

EN

回答 2

Stack Overflow用户

发布于 2019-05-12 19:10:09

从你的活动中

Bundle b = new Bundle();
b.putString("name", "123456789");
FragmentA fragmentA = new FragmentA ();
fragmentA .setArguments(b);

fm.beginTransaction()
.replace(R.id.fragment_container, new FragmentA())
.commit();

这个在碎片里。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String text = getArguments().getString("name");    
    return inflater.inflate(R.layout.fragment, container, false);
}
票数 0
EN

Stack Overflow用户

发布于 2019-05-12 19:17:30

而不是

Bundle bundle = getArguments();

使用这个

Bundle bundle = this.getArguments();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56098554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档