如何将TypedArray传递到包中

时间:2018-06-20 12:45:35

标签: android android-fragments bundle typed-arrays

有人可以解释如何将TypedArray传递到Android的Bundle中吗? 我正在使用TypedArray@Drawable中的某些图像存储在资源文件中,我想将该数组传递给带有setArguments的片段,该片段接受一个包。

代码段:

{
    fragmentTransaction = getSupportFragmentManager().fragmentManager.beginTransaction();

Fragment f = new fFragment();

        fImages = (Parcelable)getResources().obtainTypedArray(R.array.fImages);
        fNames = getResources().getStringArray(R.array.fNames);
        Bundle b = new Bundle();
        b.putStringArray("name", fNames);
        b.putParcelable("image", fImages);
        sub.setArguments(b);
        fragmentTransaction.replace(R.id.mainFrameLayout, f).commit();
}

2 个答案:

答案 0 :(得分:0)

使用toString()方法传递Typedarray,看看

TypedArray typedArray = null;
 Bundle bundle = new Bundle();
 bundle.putString("myArray",typedArray.toString());

答案 1 :(得分:0)

您不需要传递TypeArray。只需将资源ID传递给下一个Fragment。然后,下一个Fragment将不得不从资源中获取TypeArray。

在片段1中

Bundle bundle = new Bundle();
bundle.putInt("TYPE_ARRAY_RES_ID", R.array.fNames);
final Fragment f = new Fragment2();
f.setArguments(b);
getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.mainFrameLayout, f)
        .commit();

在片段2中

@ArrayRes int typeArrayRes =  getArguments().getInt("TYPE_ARRAY_RES_ID");
String[] stringArray = getResources().getStringArray(typeArrayRes);
// TODO