我有这个带有一个简单复选框的应用程序,当用户按下它时,它会为build.prop添加一行,但是当我退出应用程序时,复选框被重置,是否有办法通过添加示例代码来防止这种情况你的帖子,因为我仍然是Android应用程序的新手.
MainActivity.java
package com.mythi.tests;import java.io.DataOutputStream;import java.io.IOException;import androID.app.Activity;import androID.content.SharedPreferences;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.Widget.CheckBox;import androID.Widget.Compoundbutton;import androID.Widget.Compoundbutton.OnCheckedchangelistener;public class MainActivity extends Activity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); } @OverrIDe public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @OverrIDe public boolean onoptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroIDManifest.xml. int ID = item.getItemID(); if (ID == R.ID.action_settings) { return true; } return super.onoptionsItemSelected(item); } public voID onCheckBoxClicked(VIEw vIEw) { // Is the vIEw Now checked? boolean checked = ((CheckBox) vIEw).isChecked(); // Check which checkBox was clicked switch(vIEw.getID()) { case R.ID.checkBox1: if (checked){ try{ Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getoutputStream()); outputStream.writeBytes("cp /system/build.prop /system/build.prop.bak\n"); outputStream.writeBytes("echo 'persist.sys.scrollingcache=3' >> /system/build.prop\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); }catch(IOException e){ }catch(InterruptedException e){ } }else{ try{ Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getoutputStream()); outputStream.writeBytes("rm -r /system/build.prop\n"); outputStream.writeBytes("mv /system/build.prop.bak /system/build.prop\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); }catch(IOException e){ }catch(InterruptedException e){ } break; } } }}
activity_main.xml中
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:paddingBottom="@dimen/activity_vertical_margin" androID:paddingleft="@dimen/activity_horizontal_margin" androID:paddingRight="@dimen/activity_horizontal_margin" androID:paddingtop="@dimen/activity_vertical_margin" tools:context="com.mythi.tests.MainActivity" > <CheckBox androID:ID="@+ID/checkBox1" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParenttop="true" androID:layout_centerHorizontal="true" androID:layout_margintop="169dp" androID:onClick="onCheckBoxClicked" androID:text="CheckBox" /></relativeLayout>
解决方法:
你在哪里使用getRuntime().exec()获得了这种非常奇怪的方法?这是一个使用SharedPreferences的简单工作代码示例.用这个替换整个switch语句:
switch(vIEw.getID()) {case R.ID.checkBox1: PreferenceManager.getDefaultSharedPreferences(this).edit() .putBoolean("checkBox1", checked).commit(); break;}
在onCreate()里面添加:
CheckBox checkBox1 = (CheckBox) findVIEwByID(R.ID.checkBox1);boolean checked = PreferenceManager.getDefaultSharedPreferences(this) .getBoolean("checkBox1", false);checkBox1.setChecked(checked);
完成.
总结以上是内存溢出为你收集整理的java – 如何在Android应用程序中保存复选框状态全部内容,希望文章能够帮你解决java – 如何在Android应用程序中保存复选框状态所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)