Привет всем!
Запутался, сижу и уже голова болит :)
Изучаю такое явление как SharePreferences, необходимо сохранять три значения по нажатию кнопки.
Поставил по дефолту одно из значений. Когда запускаю приложение, значение не передается.
Нажимаю на кнопку - значение передается. Но перезапускаю и его нет.
В общем не получается наладить это. Я только начал познавать эти сохранения, так что не сильно ругайтесь, что такую вещь и не могу понять :)
вот код:
SharedPrefDialog.java
import android.content.Context;
import android.content.SharedPreferences;
public class SharedPrefDialog {
SharedPreferences mySharedPrefDialog;
public SharedPrefDialog(Context context) {
mySharedPrefDialog = context.getSharedPreferences("filename", Context.MODE_PRIVATE);
}
public void setDialogState(String state) {
SharedPreferences.Editor editor = mySharedPrefDialog.edit();
editor.putString("Dialog", state);
editor.commit();
}
public String loadDialogState () {
String state = mySharedPrefDialog.getString("Dialog", "1");
return state;
}
}
Dialog:
public class A1_1_Dialog extends AppCompatActivity {
private ViewFlipper viewFlipper;
final String TAG = "States";
SharedPrefDialog sharedprefdialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
sharedprefdialog = new SharedPrefDialog(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.a1_1_dialog_screen); //назначаем layout (внешний вид)
viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
if(sharedprefdialog.loadDialogState() == "1") {
// Создаем View и добавляем их в уже готовый flipper
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int layouts[] = new int[]{ R.layout.a1_1_1_first_dialog_new, R.layout.a1_1_2_second_dialog, R.layout.a1_1_3_three_dialog };
for (int layout : layouts)
viewFlipper.addView(inflater.inflate(layout, null));
}else if(sharedprefdialog.loadDialogState() == "2"){
// Создаем View и добавляем их в уже готовый flipper
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int layouts[] = new int[]{ R.layout.a1_1_1_first_dialog_new_1, R.layout.a1_1_2_second_dialog, R.layout.a1_1_3_three_dialog };
for (int layout : layouts)
viewFlipper.addView(inflater.inflate(layout, null));
}else if(sharedprefdialog.loadDialogState() == "3"){
// Создаем View и добавляем их в уже готовый flipper
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int layouts[] = new int[]{ R.layout.a1_1_1_first_dialog, R.layout.a1_1_2_second_dialog, R.layout.a1_1_3_three_dialog };
for (int layout : layouts)
viewFlipper.addView(inflater.inflate(layout, null));
}
Кнопки:
Button button_dialog_1 = (Button) findViewById(R.id.button_dialog_1);
Button button_dialog_2 = (Button) findViewById(R.id.button_dialog_2);
Button button_dialog_3 = (Button) findViewById(R.id.button_dialog_3);
button_dialog_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sharedprefdialog.setDialogState("1");
Toast.makeText(getBaseContext(), "1 схема", Toast.LENGTH_SHORT).show();
}
});
button_dialog_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sharedprefdialog.setDialogState("2");
Toast.makeText(getBaseContext(), "2 схема", Toast.LENGTH_SHORT).show();
}
});
button_dialog_3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sharedprefdialog.setDialogState("3");
Toast.makeText(getBaseContext(), "3 схема", Toast.LENGTH_SHORT).show();
}
});
В общем ощущение, что в SharedPrefDialog
loadDialogState
не передает значение в
setDialogState
. Как починить?
Спасибо :)
p.s. и еще почему-то слово *public* горит и пишет: acces can be package private, будто оно не используется в других классах, как я понял? А оно используется )