安卓退出程序怎么保存当前设置!

杨吅 2016-09-29 11:47:10
如标题所诉一样,我现在想做一个设置开关按钮
第一次打开程序将开关按钮设置为开后
退出程序第二次进入程序的时候设置就被清零.变为初始化的设置.需要在次设置.....现在求解怎么在退出的时候保存这个状态,
在第二次进入的时候不被清零需重新设置。。。。。。
有源码或者教程最好,新学者很多地方不懂不要见怪
...全文
663 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
枫_漫天 2016-09-30
  • 打赏
  • 举报
回复
引用 13 楼 qq_33342776 的回复:
[quote=引用 3 楼 u010200419 的回复:] [quote=引用 1 楼 u010200419 的回复:] 用sharepreference保存
程序退出时获取当前开关状态 并存储 1.sharepreference 存储代码 SharedPreferences sharedPreferences = getSharedPreferences("wujay", Context.MODE_PRIVATE); //私有数据 Editor editor = sharedPreferences.edit();//获取编辑器 editor.putString("name", "wujaycode"); editor.putInt("age", 4); editor.commit();//提交修改 生成的wujay.xml文件内容如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">wujaycode</string> <int name="age" value="4" /> </map> 程序打开时获取对应状态 并设置开关状态 2.获取数据 与之对应的获取数据的方法: SharedPreferences share=getSharedPreferences("wujay ",Activity.MODE_WORLD_READABLE); int i=share.getInt("i",0); String str=share.getString("str",""); boolean flag=share.getBoolean("flag",false); getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值 [/quote] 怎么将isChecked数据设置给ToggleButton[/quote] ToggleButtonActivity.java package com.cen.aesgcm; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.util.Log; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.ToggleButton; import android.widget.CompoundButton.OnCheckedChangeListener; public class ToggleButtonActivity extends Activity { private ToggleButton toggleButton = null; private Boolean initState; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); toggleButton = (ToggleButton) findViewById(R.id.toggleButton); SharedPreferences share = getSharedPreferences("buttonState", Activity.MODE_WORLD_READABLE); initState = share.getBoolean("isChecked", false);// 获取初始状态,如果缺省值,则取默认值false Log.d("cen", "initState: " + initState); toggleButton.setChecked(initState);//设置初始状态 toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { toggleButton.setChecked(isChecked); //状态改变时保存开关状态 SharedPreferences sharedPreferences = getSharedPreferences( "buttonState", Context.MODE_PRIVATE); // 私有数据 Editor editor = sharedPreferences.edit();// 获取编辑器 Log.d("cen", "isChecked: " + isChecked); editor.putBoolean("isChecked", isChecked); editor.commit();// 提交修改 } }); } } main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ToggleButton android:id="@+id/toggleButton" android:layout_width="140dip" android:layout_height="wrap_content" android:textOn="开灯" android:textOff="关灯" android:layout_gravity="center_horizontal" /> </LinearLayout>
枫_漫天 2016-09-29
  • 打赏
  • 举报
回复
引用 1 楼 u010200419 的回复:
用sharepreference保存
程序退出时获取当前开关状态 并存储 1.sharepreference 存储代码 SharedPreferences sharedPreferences = getSharedPreferences("wujay", Context.MODE_PRIVATE); //私有数据 Editor editor = sharedPreferences.edit();//获取编辑器 editor.putString("name", "wujaycode"); editor.putInt("age", 4); editor.commit();//提交修改 生成的wujay.xml文件内容如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">wujaycode</string> <int name="age" value="4" /> </map> 程序打开时获取对应状态 并设置开关状态 2.获取数据 与之对应的获取数据的方法: SharedPreferences share=getSharedPreferences("wujay ",Activity.MODE_WORLD_READABLE); int i=share.getInt("i",0); String str=share.getString("str",""); boolean flag=share.getBoolean("flag",false); getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
ink_s 2016-09-29
  • 打赏
  • 举报
回复
百度android sp存储 1.写内容 sp = getSharedPreferences("UserInfo", 0); sp.edit().putBoolean("cbal", isChecked).commit(); UserInfo是指xml文件的文件名,如果此文件已存在则直接向其中写内容“isChecked”的值,首先通过SharedPreferences的edit()方法创建editor,然后调用commit()方法提修改 2.读内容 sp = getSharedPreferences("UserInfo", 0); etAccount.setText(sp.getString("account", null)); etPW.setText(sp.getString("password", null)); cbal.setChecked(sp.getBoolean("cbal", false)); cbrp.setChecked(sp.getBoolean("cbrp", false));
枫_漫天 2016-09-29
  • 打赏
  • 举报
回复
用sharepreference保存
ink_s 2016-09-29
  • 打赏
  • 举报
回复
你存的时候可以存true false 也可以存12345 存: if(按钮是开的){ 存个1 }else{存个2} 读的时候: if(读到的是1){ 开关设置为开}else{ 关 }
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 12 楼 ink_s 的回复:
1为开2为关 不就行了 退出的时候或者改变开关状态的时候 就存进去 在onCreate 的时候先去读状态 如果是2 或者你第一次开程序 还没写过 那就读不到 会去一个默认值值 你也设成2 这开关就设置成关 1就设置成开 还不会怎么代码改变开关状态 你百度android 改变开关状态
在OnCreate里面读的话,存的是时候是存的ToggleButton的isChecked状 在OnCreate里面读的话怎么没有isChecked这个数据啊,只有true,false 是选哪一个,怎么设置给ToggleButton
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 3 楼 u010200419 的回复:
[quote=引用 1 楼 u010200419 的回复:] 用sharepreference保存
程序退出时获取当前开关状态 并存储 1.sharepreference 存储代码 SharedPreferences sharedPreferences = getSharedPreferences("wujay", Context.MODE_PRIVATE); //私有数据 Editor editor = sharedPreferences.edit();//获取编辑器 editor.putString("name", "wujaycode"); editor.putInt("age", 4); editor.commit();//提交修改 生成的wujay.xml文件内容如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">wujaycode</string> <int name="age" value="4" /> </map> 程序打开时获取对应状态 并设置开关状态 2.获取数据 与之对应的获取数据的方法: SharedPreferences share=getSharedPreferences("wujay ",Activity.MODE_WORLD_READABLE); int i=share.getInt("i",0); String str=share.getString("str",""); boolean flag=share.getBoolean("flag",false); getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值 [/quote] 怎么将isChecked数据设置给ToggleButton
ink_s 2016-09-29
  • 打赏
  • 举报
回复
1为开2为关 不就行了 退出的时候或者改变开关状态的时候 就存进去 在onCreate 的时候先去读状态 如果是2 或者你第一次开程序 还没写过 那就读不到 会去一个默认值值 你也设成2 这开关就设置成关 1就设置成开 还不会怎么代码改变开关状态 你百度android 改变开关状态
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 7 楼 ink_s 的回复:
public class SpActivity extends Activity { private EditText nameText; private EditText ageText; private TextView resultText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); nameText = (EditText)this.findViewById(R.id.name); ageText = (EditText)this.findViewById(R.id.age); resultText = (TextView)this.findViewById(R.id.showText); Button button = (Button)this.findViewById(R.id.button); Button showButton = (Button)this.findViewById(R.id.showButton); button.setOnClickListener(listener); showButton.setOnClickListener(listener); // 回显 SharedPreferences sharedPreferences=getSharedPreferences("ljq123", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); String nameValue = sharedPreferences.getString("name", ""); int ageValue = sharedPreferences.getInt("age", 1); nameText.setText(nameValue); ageText.setText(String.valueOf(ageValue)); } private View.OnClickListener listener = new View.OnClickListener(){ public void onClick(View v) { Button button = (Button)v; //ljq123文件存放在/data/data/<package name>/shared_prefs目录下 SharedPreferences sharedPreferences=getSharedPreferences("ljq123", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); switch (button.getId()) { case R.id.button: String name = nameText.getText().toString(); int age = Integer.parseInt(ageText.getText().toString()); Editor editor = sharedPreferences.edit(); //获取编辑器 editor.putString("name", name); editor.putInt("age", age); editor.commit();//提交修改 Toast.makeText(SpActivity.this, "保存成功", Toast.LENGTH_LONG).show(); break; case R.id.showButton: String nameValue = sharedPreferences.getString("name", ""); int ageValue = sharedPreferences.getInt("age", 1); resultText.setText("姓名:" + nameValue + ",年龄:" + ageValue); break; } } }; }
我现在能把它写进去了,就是不知道在哪里出去来怎么设置进去
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 7 楼 ink_s 的回复:
public class SpActivity extends Activity { private EditText nameText; private EditText ageText; private TextView resultText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); nameText = (EditText)this.findViewById(R.id.name); ageText = (EditText)this.findViewById(R.id.age); resultText = (TextView)this.findViewById(R.id.showText); Button button = (Button)this.findViewById(R.id.button); Button showButton = (Button)this.findViewById(R.id.showButton); button.setOnClickListener(listener); showButton.setOnClickListener(listener); // 回显 SharedPreferences sharedPreferences=getSharedPreferences("ljq123", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); String nameValue = sharedPreferences.getString("name", ""); int ageValue = sharedPreferences.getInt("age", 1); nameText.setText(nameValue); ageText.setText(String.valueOf(ageValue)); } private View.OnClickListener listener = new View.OnClickListener(){ public void onClick(View v) { Button button = (Button)v; //ljq123文件存放在/data/data/<package name>/shared_prefs目录下 SharedPreferences sharedPreferences=getSharedPreferences("ljq123", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); switch (button.getId()) { case R.id.button: String name = nameText.getText().toString(); int age = Integer.parseInt(ageText.getText().toString()); Editor editor = sharedPreferences.edit(); //获取编辑器 editor.putString("name", name); editor.putInt("age", age); editor.commit();//提交修改 Toast.makeText(SpActivity.this, "保存成功", Toast.LENGTH_LONG).show(); break; case R.id.showButton: String nameValue = sharedPreferences.getString("name", ""); int ageValue = sharedPreferences.getInt("age", 1); resultText.setText("姓名:" + nameValue + ",年龄:" + ageValue); break; } } }; }
我用的是一个开关状态的按钮,就是不知道怎么保存他的状态,和怎么取出它的状态并设置
ink_s 2016-09-29
  • 打赏
  • 举报
回复
Android数据存储之SharedPreference 0[color=#FF6600].[color=#0000FF]0[/color][/color]
ink_s 2016-09-29
  • 打赏
  • 举报
回复
public class SpActivity extends Activity { private EditText nameText; private EditText ageText; private TextView resultText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); nameText = (EditText)this.findViewById(R.id.name); ageText = (EditText)this.findViewById(R.id.age); resultText = (TextView)this.findViewById(R.id.showText); Button button = (Button)this.findViewById(R.id.button); Button showButton = (Button)this.findViewById(R.id.showButton); button.setOnClickListener(listener); showButton.setOnClickListener(listener); // 回显 SharedPreferences sharedPreferences=getSharedPreferences("ljq123", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); String nameValue = sharedPreferences.getString("name", ""); int ageValue = sharedPreferences.getInt("age", 1); nameText.setText(nameValue); ageText.setText(String.valueOf(ageValue)); } private View.OnClickListener listener = new View.OnClickListener(){ public void onClick(View v) { Button button = (Button)v; //ljq123文件存放在/data/data/<package name>/shared_prefs目录下 SharedPreferences sharedPreferences=getSharedPreferences("ljq123", Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE); switch (button.getId()) { case R.id.button: String name = nameText.getText().toString(); int age = Integer.parseInt(ageText.getText().toString()); Editor editor = sharedPreferences.edit(); //获取编辑器 editor.putString("name", name); editor.putInt("age", age); editor.commit();//提交修改 Toast.makeText(SpActivity.this, "保存成功", Toast.LENGTH_LONG).show(); break; case R.id.showButton: String nameValue = sharedPreferences.getString("name", ""); int ageValue = sharedPreferences.getInt("age", 1); resultText.setText("姓名:" + nameValue + ",年龄:" + ageValue); break; } } }; }
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 2 楼 ink_s 的回复:
百度android sp存储 1.写内容 sp = getSharedPreferences("UserInfo", 0); sp.edit().putBoolean("cbal", isChecked).commit(); UserInfo是指xml文件的文件名,如果此文件已存在则直接向其中写内容“isChecked”的值,首先通过SharedPreferences的edit()方法创建editor,然后调用commit()方法提修改 2.读内容 sp = getSharedPreferences("UserInfo", 0); etAccount.setText(sp.getString("account", null)); etPW.setText(sp.getString("password", null)); cbal.setChecked(sp.getBoolean("cbal", false)); cbrp.setChecked(sp.getBoolean("cbrp", false));
这个读取该些在哪里?要给什么判断吗?是重写声明周期的方法里吗?
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 2 楼 ink_s 的回复:
百度android sp存储 1.写内容 sp = getSharedPreferences("UserInfo", 0); sp.edit().putBoolean("cbal", isChecked).commit(); UserInfo是指xml文件的文件名,如果此文件已存在则直接向其中写内容“isChecked”的值,首先通过SharedPreferences的edit()方法创建editor,然后调用commit()方法提修改 2.读内容 sp = getSharedPreferences("UserInfo", 0); etAccount.setText(sp.getString("account", null)); etPW.setText(sp.getString("password", null)); cbal.setChecked(sp.getBoolean("cbal", false)); cbrp.setChecked(sp.getBoolean("cbrp", false));
那这个UserInfo是自己创建的还是系统调用创建的,里面写写什么?
杨吅 2016-09-29
  • 打赏
  • 举报
回复
引用 3 楼 u010200419 的回复:
[quote=引用 1 楼 u010200419 的回复:] 用sharepreference保存
程序退出时获取当前开关状态 并存储 1.sharepreference 存储代码 SharedPreferences sharedPreferences = getSharedPreferences("wujay", Context.MODE_PRIVATE); //私有数据 Editor editor = sharedPreferences.edit();//获取编辑器 editor.putString("name", "wujaycode"); editor.putInt("age", 4); editor.commit();//提交修改 生成的wujay.xml文件内容如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">wujaycode</string> <int name="age" value="4" /> </map> 程序打开时获取对应状态 并设置开关状态 2.获取数据 与之对应的获取数据的方法: SharedPreferences share=getSharedPreferences("wujay ",Activity.MODE_WORLD_READABLE); int i=share.getInt("i",0); String str=share.getString("str",""); boolean flag=share.getBoolean("flag",false); getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值 [/quote] 这些代码是写在哪个方法中的?有点看不懂啊

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧