【问题标题】:How to pass String Array from ActivityMain to Fragment如何将字符串数组从 ActivityMain 传递到 Fragment
【发布时间】:2017-10-24 20:07:21
【问题描述】:

如何从MainActivity传递String[]

example.add(new Fragment1(new String[]{"answer 1", "answer 2", "answer 3"}));
example.add(new Fragment1(new String[]{"answer 4", "answer 5", "answer 6"}));

到此Fragment 并使其动态工作(在滑动时)

public class Fragment1 extends Fragment {

    String stringValue;
    int imagesResId;
    TextView text;
    String[] rbData;

    public Fragment1() {
    }

    public Fragment1(String str, int imageView, String[] rb) {
        this.stringValue = str;
        this.imagesResId = imageView;
        this.rbData = rb;
    }

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

        View view = inflater.inflate(R.layout.fragment1, container, false);
        text = view.findViewById(R.id.textView);
        ImageView imageResId = view.findViewById(image);

        text.setText(stringValue);
        imageResId.setImageResource(imagesResId);

        return view;
    }
}

【问题讨论】:

    标签: java android arrays string radio-button


    【解决方案1】:

    通过:

    putStringArray("my_array", myArray);
    

    检索:

    getArguments().getStringArray("my_array");
    

    在您的片段中:

    public static Fragment1 newInstance(String[] array) {
        Fragment1 fragment = new Fragment1();
        Bundle args = new Bundle();
        args.putStringArray("my_array", array);
        fragment.setArguments(args);
        return fragment;
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            String[] myArray = getArguments().getStringArray("my_array");
        }
    }
    

    要开始片段:

    Fragment1 frag = Fragment1.newInstance(myArray);
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    //.....
    

    【讨论】:

    • 谢谢。我会试试这个。但是除了使用bundle之外,还有其他方法可以将StringArray直接从ActivityFragment1构造函数传递给onCreateView方法吗?就像我对例如text 在我上面的帖子中?来自MainActivity 的代码行是example.add(new Fragment1("text1"));
    • @MissAndroid 使用Bundle 将数据从Activity 传递到FragmentFragmentFragment 可能是可行的方法。但是根据用例,如果您不想使用Bundle,您可以使用interface 或使用一些第三方库,如事件总线等。
    • 我的意思是bundle 没问题,但只是想知道我是否设法使用带有参数的构造函数将example.add(new Fragment1("text1")); 中的这一行example.add(new Fragment1("text1")); 中的“文本”传递给Fragment1,所以也许有用String[] answer1..etc做同样的方法
    • 请看this
    • 你好。你能看看这个帖子吗?在onCreateViewif 语句中设置布尔值有一些麻烦。 stackoverflow.com/questions/47062603/…
    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多