私はAndroid App Developmentの新機能で、コース用にTodoList Appを作成することになっています。しかし、私のコードのSharedPreferenceは機能しません。私はonCreateやonStopのような特定の方法で特定の方法でそれを使用する必要があるかどうかはわかりません。SharedPreferencesは再起動後にすべてのデータを保存しません
それは、ユーザーが永続的に入力している第一の入力を保存しているが、同じ位置に: (「task0」は私が「putStringの引数として使用されるさまざまな変数名を追跡するために使用するものです「それは、同じセッションで、その後の入力を保存している
はaddStuff方法では、)の値を置き換えないようにするが、ユーザがそのセッションを終了した場合、すべてのそれらの値の後に 『T』なくなっています。ユーザーがアプリを再起動して別のもの(「g」など)を入力すると、同じ第3位に「g」が保存されます。
私は基本的なJavaの知識を持っており、何が起こっているのか理解しようとしましたが、失敗しました。間違いがどこにあり、どのようにSharedPreferencesを正しく使用するのか教えてください。
public class TodoActivity extends AppCompatActivity {
public ArrayList<String> items;
public ArrayAdapter<String> itemsAdapter;
public ListView list;
public String s;
public EditText taskBox;
public static final String filename = "itemsList";
public TextView text;
public static int counter = 0;//counter starting at 0 no matter what, everytime the app starts
public String newtask= "task";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_todo);
list = (ListView) findViewById(R.id.list1);text = (TextView) findViewById(R.id.text1);
taskBox = (EditText) findViewById(R.id.box);
s = taskBox.getText().toString();
items = new ArrayList<String>();
itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);
list.setAdapter(itemsAdapter);
//add items to list
items.add("First Item");
items.add("Second Item");
//restore
SharedPreferences sp = this.getSharedPreferences("itemsList", 0);
//checking if it stores the previous values, this gives the last input but not the previous ones after restarting the app
String dummyname = "task";
text.setText(String.valueOf(counter));//since counter is again at
for(int c=0; c<=50; c++){
String num = String.valueOf(c);
dummyname = dummyname + num;
String x = sp.getString(dummyname, "not found");
if (x.equalsIgnoreCase("not found")){
counter=c-1;
break;
} else {
items.add(x);
text.setText(dummyname);
}
}
}
public void addItem(View v){
s = taskBox.getText().toString();
itemsAdapter.add(s);//adding the new task as string
String temp = String.valueOf(counter);
newtask = "task" + temp;
//trying to store the new tasks with different variable names to avoid being replaced
text.setText(newtask);
SharedPreferences sp = this.getSharedPreferences("itemsList", 0);
SharedPreferences.Editor e = sp.edit();
e.putString(newtask,s);
e.apply();
counter++;
}
}
あなたはどこで共有の設定から価値を得ましたか? –
あなたのデータを追加し終えたら 'e.commit()'を使ってみてください。 –
私はそれを試しました。うまくいきませんでした。 – SamaSamrin