我想在片段中使用共享首选项。一个用于检查该片段是否第一次运行,如果是,则将另一个值存储到共享首选项中。我不知道为什么它不起作用。这是我的代码。
String user_name;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.item_list_fragment, container, false);
SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
if(sp.getBoolean("isFirst",true)) {
edit.putBoolean("isFirst", false);
edit.putString("First_Name", FirstRunActivity.username).apply();
}
user_name = sp.getString("First_Name","NOT WORKKING");
TextView test = (TextView) view.findViewById(R.id.test);
test.setText(user_name);
}
答案 0 :(得分:0)
if(sp.getBoolean("isFirst",true)) {
edit.putBoolean("isFirst", false);
edit.putString("First_Name", FirstRunActivity.username).commit();
}
答案 1 :(得分:0)
从您的代码中,如果您最初没有将isFirst的值设置为true,那么它将始终返回false
if(sp.getBoolean("isFirst",true)) {
edit.putBoolean("isFirst", false);
edit.putString("First_Name", FirstRunActivity.username).apply();
}
您可以尝试此解决方案。
首先在您的FirstRunActivity中,您可以设置类成员布尔变量
private boolean inFirstActivity = true;
然后在你的onCreate方法中,你需要设置你的SharePreference isFirst键值,如
if(inFirstActivity) edit.putBoolean('isFirst', true);
然后,你可以在课堂上查看其后的代码。
if(sp.getBoolean("isFirst",true)) {
edit.putBoolean("isFirst", false);
edit.putString("First_Name", FirstRunActivity.username).apply();
}