您好我正在尝试将一个字符串变量从一个活动传递到一个片段,但它总是为空。
首先我设置变量值,然后在Activity:
中创建包String results = setResultCaption(bothEarsBad, leftEarBad, rightEarBad).toString();
然后
Bundle bundle = new Bundle();
bundle.putString("resultsString", results);
RightEarResults rightEarResults = new RightEarResults();
rightEarResults.setArguments(bundle);
然后我从片段bundle
方法调用onCreateView
,如下所示:
String bundle = getArguments().getString("resultsString");
然后在TextView
txt = (TextView) rootView.findViewById(R.id.results_text);
txt.setText(bundle);
任何人都可以帮助我理解为什么它总是无效。
答案 0 :(得分:1)
为newInstance()
提供Fragment
方法并在那里移交参数:
public static YourFragment newInstance(String valueToPass) {
YourFragment f = new YourFragment();
Bundle b = new Bundle();
b.putString("key", valueToPass);
f.setArguments(b);
return f;
}
在Actitity
:
getSupportFragmentManager().beginTransaction().replace(R.id.container, YourFragment.newInstance(stringtoPass), "yourFragTag").commit();
在Fragment
内,您可以使用getArguments()
方法检索该值:
String yourvalue = getArguments().getString("key");
编辑另外,请检查您的setResultCaption(...)
方法是否实际返回了某些内容,而不是NULL。
答案 1 :(得分:0)
如果要在片段初始化时传递变量,可以:
使用捆绑包作为Fragment.setArgument()
方法
使用静态方法将变量作为参数。查看@Philipp Jahoda的答案。
如果您想在初始化后将变量传递给片段,可以参考官方文档中的this post
答案 2 :(得分:0)
您可以这样做:
来自您的活动;
Intent passIntent = new Intent(MainActivity.this, Yourclass.class);
passIntent.addExtra("resultsString",results);
startActivity(passIntent);
在你的片段中;
Intent intentBundle = getActivity().getIntent();
String someresult= intentBundle.getStringExtra("resultsString");
Log.i("Result : ", someresult);
然后,
txt = (TextView) rootView.findViewById(R.id.results_text);
txt.setText(someresult);