我有一个MainActivity
包含一串字符串,用户可以在此活动中修改这些字符串。 activity_main
由mainActivity
和fragment
组成。我希望这些字符串能够来到FragmentActivity()
。
问题是我不能使用bundle,因为它返回null,但我知道这是因为,对于mainActivity,字符串的值是null
onStart
,因此当你发送它时在开头的片段中,它会发送所有带有null
值的字符串(因为用户尚未在MainActivity
中编辑字符串)。
如果字符串被修改后,如何直接从MainActivity
类中获取字符串。
我目前的解决方案:
MainActivity();
Bundle bundle1 =new Bundle();
bundle1 .putString("string1", string1);
bundle1 .putString("string2", string2);
Fragment Fragment = new Fragment();
Fragment.setArguments(bundle1);
FragmentClass();
final Bundle bundle1 = this.getArguments();
if(bundle1 != null){
string1 = getArguments().getString("string1");
string2 = getArguments().getString("string2");
}
答案 0 :(得分:1)
你错了吗
if(bundle1 != null){
string1 = getArguments().getString(string1);
string2 = getArguments().getString(string2);
}
更正,如下所示:
if(bundle1!= null){
String string1=getArguments().getString("String1"); // Provide Double Quotes
String string2=getArguments().getString("String2"); // Provide Double Quotes
}
答案 1 :(得分:1)
如何直接从MainActivity Class获取字符串 在他们被修改之后。
使用SharedPreferences ---
public void setSetting(String key, String value) {
if(getActivity() != null)
{
SharedPreferences settings = getActivity().getSharedPreferences("ProjectPref", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
// Commit the edits!
editor.commit();
}
}
public String getSetting(String key, String def) {
try
{
SharedPreferences settings = getActivity().getSharedPreferences("ProjectPref", 0);
return settings.getString(key, def);
}
catch(Exception e)
{
e.printStackTrace();
}
return "";
}
<强> MainActivity(); 强>
setSetting("String1",String1);
setSetting("String2",String2);
注意:在用户修改字符串时使用方法setSetting
,以获取存储在共享首选项中的最新值。
<强> FragmentClass(); 强>
String string1 = getSetting("String1", "");
String string2 = getSetting("String2", "");
在这里,您可以分别在变量string1和string2中获取这些值。
有关SharedPreferences的详情。
答案 2 :(得分:0)
您没有从捆绑中获取字符串。
String1 = getArguments().getString(String1);
需要
String1 = getArguments().getString("String1");