我有兩個活動A和B.檢索共享首選項
B:是一項設置活動,它將所有設置保存在共享首選項中。
答:是主要的活動,我檢索保存在B活性
的問題是,如果用戶使用的應用程序首次並啓動A活性的強制關閉共享偏好。
我想這是因爲尚未保存沒有共享偏好...
的一個活動:
public class DawaaActivity extends ListActivity implements View.OnClickListener {
Button add;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SharedPreferences emportPref = getSharedPreferences("dawaaData",MODE_PRIVATE);
if (emportPref.getInt("exists", 0) == 1){
String dawaaList[] = {emportPref.getString("subject", null)};
setListAdapter(new ArrayAdapter<String>(DawaaActivity.this,
android.R.layout.simple_list_item_1,dawaaList));
}
initialaiz();
}
private void initialaiz() {
add = (Button) findViewById(R.id.button3);
add.setOnClickListener(this);
}
public void onClick(View v) {
Intent data = new Intent(DawaaActivity.this,SettingActivity.class);
startActivity(data);
}
}
的B活性:
public class SettingActivity extends Activity implements View.OnClickListener {
EditText et;
EditText et1;
Spinner list;
TimePicker startTime;
Button save;
Button cancel;
private SharedPreferences exportPref;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.setting);
initialaiz();
}
private void initialaiz() {
et = (EditText) findViewById(R.id.text);
et1 = (EditText) findViewById(R.id.text1);
list = (Spinner) findViewById(R.id.spinner);
startTime = (TimePicker) findViewById(R.id.timePicker);
save = (Button) findViewById(R.id.save);
cancel = (Button) findViewById(R.id.cancel);
save.setOnClickListener(this);
cancel.setOnClickListener(this);
}
public void onClick(View v) {
switch(v.getId()){
case R.id.save:
save();
Intent transferData = new Intent(SettingActivity.this,DawaaActivity.class);
startActivity(transferData);
break;
case R.id.cancel:
finish();
break;
}
}
private void save() {
exportPref = getSharedPreferences("dawaaData",MODE_PRIVATE);
SharedPreferences.Editor editor = exportPref.edit();
editor.putString("subject", et.getText().toString());
editor.putString("dosesC", et1.getText().toString());
editor.putString("doses", list.getSelectedItem().toString());
editor.putInt("hour", startTime.getCurrentHour());
editor.putInt("minute", startTime.getCurrentMinute());
editor.putInt("exists", 1);
editor.commit();
Toast.makeText(SettingActivity.this,"data has been saved" ,Toast.LENGTH_SHORT).show();
}
}
我怎麼能解決問題呢? ??
編輯:
我添加ListView控件在我的佈局
,我編輯這樣的類:
public class DawaaActivity extends Activity implements View.OnClickListener {
ListView myList;
SharedPreferences emportPref = getSharedPreferences("dawaaData",MODE_PRIVATE);
String dawaaList[] = {emportPref.getString("subject", "no data yet")};
myList = (ListView) findViewById(R.id.ListView);
myList.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, dawaaList));
,這是logcat的:
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.os.Looper.loop(Looper.java:123)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-28 14:56:41.112: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-28 14:56:41.112: E/AndroidRuntime(273): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
08-28 14:56:41.112: E/AndroidRuntime(273): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.os.Looper.loop(Looper.java:123)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-28 14:59:54.272: E/AndroidRuntime(303): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-28 14:59:54.272: E/AndroidRuntime(303): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
08-28 14:59:54.272: E/AndroidRuntime(303): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
08-28 15:02:26.632: E/AndroidRuntime(331): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
08-28 15:02:26.632:E/AndroidRuntime(331):at a ndroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 08-28 15:02:26.632:E/AndroidRuntime(331):at android.app.ActivityThread.access $ 2300(ActivityThread.java:125) 08- 28 15:02:26.632:E/AndroidRuntime(331):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 08-28 15:02:26.632:E/AndroidRuntime(331):at android .os.Handler.dispatchMessage(Handler.java:99) 08-28 15:02:26.632:E/AndroidRuntime(331):at android.os.Looper.loop(Looper.java:123) 08-28 15 :02:26.632:E/AndroidRuntime(331):at android.app.ActivityThread.main(ActivityThread.java:4627) 08-28 15:02:26.632:E/AndroidRuntime(331):at com.android.internal .os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 08-28 15:02:26.632:E/AndroidRuntime(331):at com.android.intern ZygoteInit.main(ZygoteInit.java:626) 08-28 15:02:26.632:E/AndroidRuntime(331):at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:146) 08-28 15:02:26.632:E/AndroidRuntime(331):at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 08-28 15:02:26.632:E/AndroidRuntime(331):at android.app。 ActivityThread.performLaunchActivity(ActivityThread.java:2577)
發佈您的logcat錯誤? –