簡體   English   中英

從MainActivity到Fragment Issue的非靜態字符串變量

[英]Non-Static String Variables from MainActivity to Fragment Issue

我有一個MainActivity ,其中包含一串字符串,用戶可以在此活動中修改這些字符串。 activity_mainmainActivity和一個fragment 我希望這些字符串進入FragmentActivity() 問題是我不能使用包,因為它返回null,但是我知道這是因為,對於mainActivity,字符串的nullonStart時為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM