我的类产品包含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");
,但它不起作用。
答案 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的方法。
希望这有帮助。