Android 共享首选项未保存值

Android 共享首选项未保存值,android,android-activity,preferences,shared,lifecycle,Android,Android Activity,Preferences,Shared,Lifecycle,我正在学习用Android构建一些应用程序。出于好奇,我在使用共享偏好时遇到了一个小而奇怪的问题。如果有人能帮助我解决这个问题,我将非常感谢他们。不管怎样,问题来了。我有两项活动。1.活动1:只包含一个按钮,可以让您进入下一个活动。2.活动2:包含带有复选框的列表视图(简单列表项选中或简单列表项多项选择项) 我的问题是:我打开我的应用程序,点击第一个活动屏幕上的按钮,这会将我移动到第二个活动。我在listview中检查一个项目。我按下手机上的后退按钮,进入第一个活动,再次按下活动1屏幕上的按钮,

我正在学习用Android构建一些应用程序。出于好奇,我在使用共享偏好时遇到了一个小而奇怪的问题。如果有人能帮助我解决这个问题,我将非常感谢他们。不管怎样,问题来了。我有两项活动。1.活动1:只包含一个按钮,可以让您进入下一个活动。2.活动2:包含带有复选框的列表视图(简单列表项选中或简单列表项多项选择项)

我的问题是:我打开我的应用程序,点击第一个活动屏幕上的按钮,这会将我移动到第二个活动。我在listview中检查一个项目。我按下手机上的后退按钮,进入第一个活动,再次按下活动1屏幕上的按钮,这将再次进入列表。现在,我只需保持列表项处于选中状态(我不会更改以前已选中的任何内容)。现在,我再次按下手机上的“后退”按钮,回到活动一。现在,当我再次按下activity one屏幕上的按钮时。它将我带回listview,但令人惊讶的是,没有检查任何内容。要注意一点,我还设置并检索了我的共享偏好

我在一行中的问题是:如果我在该活动中不更改检查列表中的值,然后返回到主活动,并返回到相同的检查列表活动,则我的共享首选项不会加载先前保存的内容。这是共享偏好的正常行为还是编码中的问题

我只想知道如何保存和检索首选项值,以及首选项保存值的时间有多长?我指的是优先保存的价值的生命周期

我的第二个问题:另外,我想知道活动生命周期中的另一件事。当我在上面的例子中解释的第二个活动中时。现在我按下home按钮,然后转到后台任务并清除正在运行的所有任务(应用程序)。现在,我的问题是,在我从后台清除所有应用程序之前,遵循活动生命周期的哪个状态,或者最终的活动生命周期是什么?请有人帮我解决这个问题。感谢所有那些有创意的开发者。希望有人能解决我的问题

public class Secondact extends ListActivity {
    ListView list;
    SharedPreferences pref;
     int pos,itemposition,positionvalue;
     boolean boolval,checkvalue;
     SharedPreferences.Editor editor;
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
          // setContentView(R.layout.secondact);
            Toast.makeText(getApplicationContext(), "ONCREATE", 50).show();

            list=getListView();

           String[] family_array=this.getResources().getStringArray(R.array.family);
           ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,family_array);
           list.setAdapter(adapter);
           list.setChoiceMode(1);
           pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         pos=pref.getInt("itempos", pos);
             boolval=pref.getBoolean("boolvalue", true);
            list.setItemChecked(pos, boolval);
            Toast.makeText(getApplicationContext(), "DATA LOADED ITEM NO:"+pos, 50).show();

           list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub


                pos=position;
                list.setItemChecked(pos, true);
                pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                editor=pref.edit();
                editor.putInt("itempos", pos);
                editor.putBoolean("boolvalue", list.isItemChecked(pos));
                editor.commit();
            }
        });

}

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
     editor=pref.edit();
        editor.putInt("itempos", pos);
        editor.putBoolean("boolvalue", list.isItemChecked(pos));
        editor.commit();
    //  Toast.makeText(getApplicationContext(), "PAUSE", 50).show();

    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         pos=pref.getInt("itempos", pos);
         boolval=pref.getBoolean("boolvalue", true);
        list.setItemChecked(pos, boolval);
        //Toast.makeText(getApplicationContext(), "RESUME", 50).show();

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         editor=pref.edit();
        editor.putInt("itempos", pos);
        editor.putBoolean("boolvalue", list.isItemChecked(pos));
        editor.commit();
        Toast.makeText(getApplicationContext(), "DESTROY", 50).show();
        Toast.makeText(getApplicationContext(), "DATA SAVED ITEM NO:"+pos, 50).show();

    }

    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        pref=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
     pos=pref.getInt("itempos", pos);
         boolval=pref.getBoolean("boolvalue", true);
        list.setItemChecked(pos, boolval);
        //Toast.makeText(getApplicationContext(), "RESTART", 50).show();

    }

    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        savedInstanceState.putInt("itempositionno", positionvalue);
        savedInstanceState.putBoolean("checkvalue", true);
        Toast.makeText(getApplicationContext(), "ONSAVEINSTANCE", 50).show();
        list.setItemChecked(pos, checkvalue);
        super.onSaveInstanceState(savedInstanceState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        pos=savedInstanceState.getInt("itempositionno", pos);
         checkvalue=savedInstanceState.getBoolean("checkvalue", true);
        list.setItemChecked(pos, checkvalue);
        Toast.makeText(getApplicationContext(), "ONRESTOREINSTANCE", 50).show();
        super.onRestoreInstanceState(savedInstanceState);
    }




}
公共类Secondact扩展了ListActivity{
列表视图列表;
共享参考优先;
int pos、itemposition、positionvalue;
布尔布尔布尔值,校验值;
SharedReferences.Editor;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.secondact);
Toast.makeText(getApplicationContext(),“ONCREATE”,50).show();
list=getListView();
String[]family_array=this.getResources().getStringArray(R.array.family);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u list\u item\u多选,family\u数组);
list.setAdapter(适配器);
列表.setChoiceMode(1);
pref=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
pos=pref.getInt(“itempos”,pos);
boolval=pref.getBoolean(“boolvalue”,true);
列表。setItemChecked(位置、布尔瓦尔);
Toast.makeText(getApplicationContext(),“数据加载项目编号:”+pos,50).show();
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//TODO自动生成的方法存根
pos=位置;
list.setItemChecked(pos,true);
pref=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
编辑器=pref.edit();
编辑器.putInt(“itempos”,pos);
编辑器.putBoolean(“布尔值”,list.isItemChecked(pos));
commit();
}
});
}
@凌驾
受保护的void onPause(){
//TODO自动生成的方法存根
super.onPause();
pref=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
编辑器=pref.edit();
编辑器.putInt(“itempos”,pos);
编辑器.putBoolean(“布尔值”,list.isItemChecked(pos));
commit();
//Toast.makeText(getApplicationContext(),“PAUSE”,50).show();
}
@凌驾
受保护的void onResume(){
//TODO自动生成的方法存根
super.onResume();
pref=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
pos=pref.getInt(“itempos”,pos);
boolval=pref.getBoolean(“boolvalue”,true);
列表。setItemChecked(位置、布尔瓦尔);
//Toast.makeText(getApplicationContext(),“RESUME”,50).show();
}
@凌驾
受保护的空onDestroy(){
//TODO自动生成的方法存根
super.ondestory();
pref=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
编辑器=pref.edit();
编辑器.putInt(“itempos”,pos);
编辑器.putBoolean(“布尔值”,list.isItemChecked(pos));
commit();
makeText(getApplicationContext(),“DESTROY”,50).show();
Toast.makeText(getApplicationContext(),“数据保存项目编号:”+pos,50).show();
}
@凌驾
受保护的void onRestart(){
//TODO自动生成的方法存根
super.onRestart();
pref=PreferenceManager.GetDefaultSharedReferences(getApplicationContext());
pos=pref.getInt(“itempos”,pos);
boolval=pref.getBoolean(“boolvalue”,true);
列表。setItemChecked(位置、布尔瓦尔);
//Toast.makeText(getApplicationContext(),“RESTART”,50).show();
}
@凌驾
SaveInstanceState上受保护的空(Bundle savedInstanceState){
//TODO自动生成的方法存根
savedInstanceState.putInt(“itempositionno”,positionvalue);
萨维丁斯坦
SharedPreferences prefs = this.getSharedPreferences(
      "com.example.app", Context.MODE_PRIVATE);
String dateTimeKey = "com.example.app.datetime";

// use a default value using new Date()
long l = prefs.getLong(dateTimeKey, new Date().getTime()); 
SharedPreferences.Editor editor = prefs.edit();
    editor.clear();
    editor.commit();
Date dt = getSomeDate();
prefs.edit().putLong(dateTimeKey, dt.getTime()).commit();
sp.getInt("CheckedValue",
    viz.Listitem.getCheckedItemPosition());