我從來沒有與SP合作過,所以我可能做了一些非常錯誤的事情,但我給了它最好的一擊。我做了很多研究,這就是我想到的,但是當我運行我的應用程序時,它會立即崩潰。使用共享首選項崩潰我的應用程序
我有很多更多的複選框,但是這只是一個例子,以保持代碼的短:
final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
cb1.setChecked(getFromSP("cb1"));
cb1.setOnCheckedChangeListener((OnCheckedChangeListener) this);
的代碼時,我設置爲「選中」的複選框:
cb1.setChecked(true);
saveInSp("cb1",isChecked);
而其餘的SP代碼:
private boolean getFromSP(String key){
SharedPreferences preferences = getApplicationContext()
.getSharedPreferences("GW2Legendary", android.content.Context.MODE_PRIVATE);
return preferences.getBoolean(key, false);
}
private void saveInSp(String key,boolean value){
SharedPreferences preferences = getApplicationContext()
.getSharedPreferences("GW2Legendary", android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
正如我所說,我從來沒有使用共享偏好,所以我可能會做真的是錯的東西。我會很感激,如果有人會解釋這是如何工作,我做錯了什麼。正如你可以看到,我試圖讓我的應用程序記住哪些複選框我已籤
我還增加了整個Java代碼,如果它可以幫助:
public class Bifrost extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bifrost);
final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
cb1.setChecked(getFromSP("cb1"));
cb1.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);
cb2.setChecked(getFromSP("cb2"));
cb2.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3);
cb3.setChecked(getFromSP("cb3"));
cb3.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
cb4.setChecked(getFromSP("cb4"));
cb4.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
cb5.setChecked(getFromSP("cb5"));
cb5.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb6 = (CheckBox) findViewById(R.id.checkBox6);
cb6.setChecked(getFromSP("cb6"));
cb6.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb7 = (CheckBox) findViewById(R.id.checkBox7);
cb7.setChecked(getFromSP("cb7"));
cb7.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb8 = (CheckBox) findViewById(R.id.checkBox8);
cb8.setChecked(getFromSP("cb8"));
cb8.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb9 = (CheckBox) findViewById(R.id.checkBox9);
cb9.setChecked(getFromSP("cb9"));
cb9.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb10 = (CheckBox) findViewById(R.id.checkBox10);
cb10.setChecked(getFromSP("cb10"));
cb10.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb11 = (CheckBox) findViewById(R.id.checkBox11);
cb11.setChecked(getFromSP("cb11"));
cb11.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb12 = (CheckBox) findViewById(R.id.checkBox12);
cb12.setChecked(getFromSP("cb12"));
cb12.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb13 = (CheckBox) findViewById(R.id.checkBox13);
cb13.setChecked(getFromSP("cb13"));
cb13.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb14 = (CheckBox) findViewById(R.id.checkBox14);
cb14.setChecked(getFromSP("cb14"));
cb14.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb15 = (CheckBox) findViewById(R.id.checkBox15);
cb15.setChecked(getFromSP("cb15"));
cb15.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb16 = (CheckBox) findViewById(R.id.checkBox16);
cb16.setChecked(getFromSP("cb16"));
cb16.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb17 = (CheckBox) findViewById(R.id.checkBox17);
cb17.setChecked(getFromSP("cb17"));
cb17.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb18 = (CheckBox) findViewById(R.id.checkBox18);
cb18.setChecked(getFromSP("cb18"));
cb18.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb19 = (CheckBox) findViewById(R.id.checkBox19);
cb19.setChecked(getFromSP("cb19"));
cb19.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb20 = (CheckBox) findViewById(R.id.checkBox20);
cb20.setChecked(getFromSP("cb20"));
cb20.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb21 = (CheckBox) findViewById(R.id.checkBox21);
cb21.setChecked(getFromSP("cb21"));
cb21.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb22 = (CheckBox) findViewById(R.id.checkBox22);
cb22.setChecked(getFromSP("cb22"));
cb22.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb23 = (CheckBox) findViewById(R.id.checkBox23);
cb23.setChecked(getFromSP("cb23"));
cb23.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb24 = (CheckBox) findViewById(R.id.checkBox24);
cb24.setChecked(getFromSP("cb24"));
cb24.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb25 = (CheckBox) findViewById(R.id.checkBox25);
cb25.setChecked(getFromSP("cb25"));
cb25.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb26 = (CheckBox) findViewById(R.id.checkBox26);
cb26.setChecked(getFromSP("cb26"));
cb26.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb27 = (CheckBox) findViewById(R.id.checkBox27);
cb27.setChecked(getFromSP("cb27"));
cb27.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb28 = (CheckBox) findViewById(R.id.checkBox28);
cb28.setChecked(getFromSP("cb28"));
cb28.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb29 = (CheckBox) findViewById(R.id.checkBox29);
cb29.setChecked(getFromSP("cb29"));
cb29.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb30 = (CheckBox) findViewById(R.id.checkBox30);
cb30.setChecked(getFromSP("cb30"));
cb30.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb31 = (CheckBox) findViewById(R.id.checkBox31);
cb31.setChecked(getFromSP("cb31"));
cb31.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb32 = (CheckBox) findViewById(R.id.checkBox32);
cb32.setChecked(getFromSP("cb32"));
cb32.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb33 = (CheckBox) findViewById(R.id.checkBox33);
cb33.setChecked(getFromSP("cb33"));
cb33.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb34 = (CheckBox) findViewById(R.id.checkBox34);
cb34.setChecked(getFromSP("cb34"));
cb34.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb35 = (CheckBox) findViewById(R.id.checkBox35);
cb35.setChecked(getFromSP("cb35"));
cb35.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb36 = (CheckBox) findViewById(R.id.checkBox36);
cb36.setChecked(getFromSP("cb36"));
cb36.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb37 = (CheckBox) findViewById(R.id.checkBox37);
cb37.setChecked(getFromSP("cb37"));
cb37.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb38 = (CheckBox) findViewById(R.id.checkBox38);
cb38.setChecked(getFromSP("cb38"));
cb38.setOnCheckedChangeListener((OnCheckedChangeListener) this);
final CheckBox cb39 = (CheckBox) findViewById(R.id.checkBox39);
cb39.setChecked(getFromSP("cb39"));
cb39.setOnCheckedChangeListener((OnCheckedChangeListener) this);
cb3.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb3.isChecked())
{
cb4.setChecked(true);
cb5.setChecked(true);
cb6.setChecked(true);
cb7.setChecked(true);
}
}
});
cb8.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb8.isChecked())
{
cb9.setChecked(true);
saveInSp("cb1",isChecked);
cb10.setChecked(true);
cb11.setChecked(true);
cb12.setChecked(true);
}
}
});
cb14.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb14.isChecked())
{
cb15.setChecked(true);
cb16.setChecked(true);
cb17.setChecked(true);
cb18.setChecked(true);
}
}
});
cb21.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb21.isChecked())
{
cb25.setChecked(true);
}
}
});
cb24.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb24.isChecked())
{
cb28.setChecked(true);
}
}
});
cb3.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb3.isChecked())
{
cb4.setChecked(true);
cb5.setChecked(true);
cb6.setChecked(true);
cb7.setChecked(true);
}
}
});
cb23.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb23.isChecked())
{
cb24.setChecked(true);
cb29.setChecked(true);
cb30.setChecked(true);
cb31.setChecked(true);
}
}
});
cb32.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb32.isChecked())
{
cb33.setChecked(true);
cb34.setChecked(true);
cb35.setChecked(true);
cb36.setChecked(true);
}
}
});
cb2.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb2.isChecked())
{
cb3.setChecked(true);
cb8.setChecked(true);
cb13.setChecked(true);
cb14.setChecked(true);
}
}
});
cb19.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb19.isChecked())
{
cb20.setChecked(true);
cb21.setChecked(true);
cb26.setChecked(true);
cb27.setChecked(true);
}
}
});
cb22.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb22.isChecked())
{
cb23.setChecked(true);
cb32.setChecked(true);
cb37.setChecked(true);
cb38.setChecked(true);
}
}
});
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (cb1.isChecked())
{
cb2.setChecked(true);
cb19.setChecked(true);
cb22.setChecked(true);
cb39.setChecked(true);
}
}
});
}
private boolean getFromSP(String key){
SharedPreferences preferences = getApplicationContext().getSharedPreferences("GW2Legendary", android.content.Context.MODE_PRIVATE);
return preferences.getBoolean(key, false);
}
private void saveInSp(String key,boolean value){
SharedPreferences preferences = getApplicationContext().getSharedPreferences("GW2Legendary", android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.bifrost, menu);
return true;
}
}
再次,對不起,如果我複雜的太多,但我只是想學:)
什麼是例外您所看到的logcat的? – kosa
我很抱歉打擾你,但正如我所說我是初學者。我如何檢查/訪問logcat? http://developer.android.com/tools/help/logcat.html這並沒有多大幫助 – Guy
檢查此問題http://stackoverflow.com/questions/3280051/how-to-enable-logcat-console-in- eclipse-for-android – kosa