片段中的getIntent与我无关

时间:2017-10-04 17:27:52

标签: java android android-fragments

我的类产品包含setter和getter方法。 在ThirdActivity中,我有数组的图像列表,我想以片段形式检索它们。

ThirdActivity

AdapterView.OnItemClickListener onItemClick = new
            AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position,
                                        long id) {
                    //Do any thing when user click to item

                    Intent i= new Intent(getApplicationContext(),FragmentOne.class);
                    Bundle b= new Bundle();

                    b.putInt("Big Image",productList2.get(position).getFragment1());
                    b.putInt("Big Image",productList2.get(position).getFragment2());
                    b.putInt("Big Image",productList2.get(position).getFragment3());
                    b.putInt("Big Image",productList2.get(position).getFragment4());

                    i.putExtras(b);
                    startActivity(i);


                }

            };

FragmentOne

ImageView img2;
Bundle b=getIntent().getExtras();

        int image =b.getInt("Big Image");
        img2.setImageResource(image);

但是我无法在FragmentOne中解析方法getIntent()。 我也尝试Bundle b=getActivity().getIntent().getExtras().getString("Big Image");,但它不起作用。

4 个答案:

答案 0 :(得分:0)

您无法使用Intent打开新片段,片段需要始终由活动托管,并在需要时膨胀。

意图只是开始新的活动,这就是为什么叫:

startActivity() // Start a new Activity

这就是为什么你的片段中没有收到意图(带有包),

希望它有所帮助,

答案 1 :(得分:0)

最好在托管片段的活动中获取意图,并使用newInstance函数传递要分段的任何数据。 在您的活动中:

Bundle b=getIntent().getExtras();
int image =b.getInt("Big Image");
img2.setImageResource(image);
FragmentTransaction transaction = 
getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.flContent, yourFragment.newInstance(image)).commit();

答案 2 :(得分:0)

传递fragment的newInstance函数中的值。

public static String IMAGE = "imagepath";
public static FragmentOne newInstance(String image) {
        FragmentOne frag = new FragmentOne();
        Bundle bundle = new Bundle();
        bundle.putString(IMAGE, image);
        frag.setArguments(bundle);
        return frag;
}

并且在片段的onCreate中获取此值。

String image = getArguments().getString(IMAGE);

和活动

FragmentOne.newInstance("Any string"); //this will create new instance of fragment.

答案 3 :(得分:0)

首先,即使这样可行,FragmentOne活动也只会获得最后一个Int,因为你要覆盖相同的&#34; Big Image&#34;带有新数字的参数。

尝试传递列表,然后在FragmentOne中检索它。之后,您可以创建一个将字符串名称绑定到Fragments的方法。

希望这有帮助。