android studio 全局变量和变量保存到xml文件的方法及应用
(一) 全局变量的使用:
android studio 在 Activity 和 Fragment 中传递变量方法:
新建一个数据类:WholeData.java
public class WholeData extends Application { private boolean isClicked; public boolean getClick(){ return this.isClicked; } public void setClick(boolean Click){ this.isClicked= Click; }}
在 AndroidMainifest.xml 文件的application部分加入语句:
android:name=".WholeData"
在activity中实例化:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Data app = (Data)getApplicationContext(); clickedButton = (ToggleButton)findViewById(R.id.click_button); CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ app.setClick(true); } else{ app.setClick(false); } } }; clickedButton .setOnCheckedChangeListener(listener); }
下面在Fragment中调用WholeData类中的全局变量:
final Data app = (Data) getActivity().getApplicationContext();boolean clickstate = app.getEnhance();
当然也可以在其他activity中调用该全局变量:
WholeData data= (WholeData) getApplicationContext();boolean ckickstata = data.getClick();
(二)保存状态值到xml文件中方法
上述全局变量的使用可以在软件运行中起作用,当软件重启时,全局变量便会恢复到初始值,此时,如果想让软件重启也不会影响到某个变量的值,则可以考虑将该值放到一个文件中。写入方法为:
/* 将状态存放到xml文件中 */ public void registerStateWrite(){ SharedPreferences sf; Context context = this; sf = context.getSharedPreferences("isReg", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sf.edit(); editor.putString("RegState", "true"); editor.commit(); }
getSharedPreferences有两个参数,第一个参数是存储的名称,第二个参数是文件的打开方式,MODE_PRIVATE表示该应用程序私有,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE是表示全局读或写权限,MODE_MULTI_PROCESS表示可以跨进程访问。
当需要获取该值时的方法为:
Context context = this;SharedPreferences sp = context.getSharedPreferences("isReg", Context.MODE_PRIVATE);String Reg_State = sp.getString("RegState", "false");
当然,进行读写操作时,需要赋给相应的权限:
(三) 实例应用:
根据状态值的情况选择进入不同的界面中:
public class TurnOn extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.turnon); Context context = this; SharedPreferences sp = context.getSharedPreferences("isReg", Context.MODE_PRIVATE); String Reg_State = sp.getString("RegState", "false"); if(Reg_State.equals("true")){ Intent intent =new Intent(TurnOn.this,MainActivity.class); startActivity(intent); } else{ Button register_bt=(Button)findViewById(R.id.register_bt); register_bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent =new Intent(TurnOn.this,Register.class); startActivity(intent); } }); } }}
程序中涉及到的活动页都需要在 AndroidMainifest.xml 文件的application进行声明:
参考:
https://blog.csdn.net/wirelessqa/article/details/8589230
https://blog.csdn.net/feiyangxiaomi/article/details/9966215
https://blog.csdn.net/qq_35980005/article/details/78380764
https://www.cnblogs.com/2010wuhao/p/4681899.html
https://blog.csdn.net/bestone0213/article/details/43639919
https://blog.csdn.net/baidu_31093133/article/details/51476726
更多相关文章
- 在Android(安卓)Studio中导入jar包
- 40.Android(安卓)资源Id工具类ResourcesUtil
- android 更新失败
- Android下使用配置文件(Preferences)
- Android:onNewIntent()触发机制及注意事项
- Android断点续传核心代码
- Linux(ubuntu 11.04)环境下Android开发环境配置
- Android(安卓)读取文件内容
- android中使用svg图标