![](/img/trans.png)
[英]How to call a non-static method in MainActivity from SecondActivity?
[英]Non-Static String Variables from MainActivity to Fragment Issue
我有一個MainActivity
,其中包含一串字符串,用戶可以在此活動中修改這些字符串。 activity_main
由mainActivity
和一個fragment
。 我希望這些字符串進入FragmentActivity()
。 問題是我不能使用包,因為它返回null,但是我知道這是因為,對於mainActivity,字符串的null
在onStart
時為null
,因此,當您在onStart
時將其作為包發送給片段時,它將發送所有具有null
值的字符串(因為用戶尚未在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");
}
你在這里錯了
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
}
即使修改了字符串,我如何也可以直接從MainActivity類獲取字符串。
使用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 "";
}
主要活動();
setSetting("String1",String1);
setSetting("String2",String2);
注意:在用戶修改字符串時,請使用setSetting
方法,以獲取存儲在“共享首選項”中的最新值。
FragmentClass();
String string1 = getSetting("String1", "");
String string2 = getSetting("String2", "");
在這里,您可以分別在變量string1和string2中獲得這些值。
有關SharedPreferences的更多信息。
您沒有從包中獲取字符串。
String1 = getArguments().getString(String1);
需要是
String1 = getArguments().getString("String1");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.