Android ListFragments中的共享首选项

Android ListFragments中的共享首选项,android,sharedpreferences,android-listfragment,Android,Sharedpreferences,Android Listfragment,我想在主活动和列表片段之间共享一个字符串。所以我想我可以使用Shared.Preferences。由于我是android新手,刚刚开始使用共享偏好,我面临着这个问题 这是我的共同喜好课 public class AppPrefs { private static final String USER_PREFS = "USER_PREFS"; private SharedPreferences appSharedPrefs; private SharedPreferen

我想在主活动和列表片段之间共享一个字符串。所以我想我可以使用Shared.Preferences。由于我是android新手,刚刚开始使用共享偏好,我面临着这个问题

这是我的共同喜好课

public class AppPrefs { 
    private static final String USER_PREFS = "USER_PREFS"; 
    private SharedPreferences appSharedPrefs;
    private SharedPreferences.Editor prefsEditor; 
    private String responseXml = "response_xml_prefs";  
    public AppPrefs(Context context){  
        this.appSharedPrefs = context.getSharedPreferences(USER_PREFS, Activity.MODE_PRIVATE); 
        this.prefsEditor = appSharedPrefs.edit();  
        } 
    public String getResponse_xml() {  
        return appSharedPrefs.getString(responseXml, "unknown");
        } 
    public void setResponse_xml(String _responser_xml) { 
        prefsEditor.putString(responseXml, _responser_xml).commit();
        }

    }
这是我的主要活动

Context context = getApplicationContext(); 
    AppPrefs appPrefs = new AppPrefs(context); 
    appPrefs.setResponse_xml(responseXml); 
这在我的列表片段中

Context context = this.getActivity(); 
    AppPrefs appPrefs = new AppPrefs(context); 
    String responseXml = appPrefs.getResponse_xml(); 
但是当我做
Log.e(“responseXml”,responseXml)

我得到一个默认字符串“unknown”,这是我在共享首选项类中输入的。 请告诉我哪里出了问题:(

更新1

public class TabActivity extends Activity {
MyTask myNewTask;
String responseXml;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent in = getIntent();
    String requestXml=in.getStringExtra("xml");
    myNewTask = new MyTask(requestXml);
    myNewTask.setOnResultListener(asynResult);
    myNewTask.execute();


    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    actionBar.setDisplayShowTitleEnabled(true);

    /** Creating All Tab */
    Tab tab = actionBar.newTab()
            .setText("All")
            .setTabListener(new CustomTabListener<AllMsgFragment>(this, "All", AllMsgFragment.class,responseXml));
    //.setIcon(R.drawable.android);

    actionBar.addTab(tab);


    /** Creating Success Tab */
    tab = actionBar.newTab()
            .setText("Success")
            .setTabListener(new CustomTabListener<SuccessMsgFragment>(this, "Success", SuccessMsgFragment.class,responseXml));
    //.setIcon(R.drawable.apple);
}

它显示空指针异常

编辑2

使用静态变量解决了我的问题

我建议使用a将字符串传递给片段:

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString(key, value);
fragment.setArguments(bundle);
在片段内部(即onCreate())


SharedReferences
存储为单例。任何
上下文
只要在您的应用程序范围内都是有效的。您建议使用
Bundle
将数据传递给Fragment是正确的。但是,我不明白OP的方法为什么不起作用。我已经更新了代码。我尝试使用Bundle。在我的ListFrag中ment,(onCreateView)我已经完成bundle bundle=this.getArguments();String myString=bundle.getString(“responseXml”,“unknown”);我没有收到异常:nullpointer@user1743673:何时以及如何将片段添加到活动中?
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString(key, value);
fragment.setArguments(bundle);
Bundle bundle = this.getArguments();
String myString = bundle.getString(key, defaultValue);