Прежде чем я объясню вам, я сказал вам, что я искал все вопросы в stackoverflow и многих веб-сайтах, поэтому не помечайте его как дубликат или какие-либо негативные действия.Я старался, много работал и все еще застрял здесь много дней.Мне нужно, чтобы вы решили простую проблему.
У меня есть проблема, связанная с вертушкой.Я пытался использовать общие настройки, чтобы сохранить значение по умолчанию, это работает.Но когда я каждый раз пытаюсь сохранить выбранное значение счетчика, происходит сбой, когда я возвращаюсь на предыдущую страницу, я не могу получить значение, выбранное ранее.
FontSettings.java
public class FontSettings extends AppCompatActivity {
private Spinner spinner1, spinnerLatin;
private SharedPreferences mMyPrefs;
private SharedPreferences.Editor mMyEdit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_font);
// toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//this line shows back button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//Display data size teks arab in dropdown list spinner
Spinner spinnerBackgroundChange = (Spinner)findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> spinnerArrayAdapter = ArrayAdapter.createFromResource(this, R.array.country_arrays, android.R.layout.simple_spinner_item);
spinnerArrayAdapter.setDropDownViewResource(R.layout.textview_with_background);
spinnerBackgroundChange.setAdapter(spinnerArrayAdapter);
//save selected spinner value
SharedPreferences sharedPref = getSharedPreferences("My_Prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPref.edit();
editor.putInt("spinnerValue", spinnerBackgroundChange.getSelectedItemPosition());
editor.apply();
//Display data size teks latin in dropdown list spinner
Spinner spinnerLatin = (Spinner)findViewById(R.id.spinnerLatin);
ArrayAdapter<CharSequence> spinnerArrayLatin = ArrayAdapter.createFromResource(this, R.array.country_arrays, android.R.layout.simple_spinner_item);
spinnerArrayLatin.setDropDownViewResource(R.layout.textview_with_background);
spinnerLatin.setAdapter(spinnerArrayLatin);
// spinnerLatin default value
spinnerLatin.setSelection(1);
addListenerOnSpinnerItemSelection();
addListenerOnSpinner2ItemSelection();
}
public void addListenerOnSpinnerItemSelection() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(new SizeArabFont());
}
public void addListenerOnSpinner2ItemSelection() {
spinnerLatin = (Spinner) findViewById(R.id.spinnerLatin);
spinnerLatin.setOnItemSelectedListener(new SizeLatinFont());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
} }
SizeArabFont.java
public class SizeArabFont implements OnItemSelectedListener {
private SharedPreferences.Editor mMyEdit;
public void onItemSelected (AdapterView <?> parent, View view, int pos, long id){
((TextView) view).setTextColor(Color.parseColor("#226169"));
switch(pos) {
case 0:
Activity activity = (Activity) parent.getContext();
TextView dgs = (TextView) activity.findViewById(R.id.tekzArab);
dgs.setTextSize(12);
break;
case 1:
Activity activitys = (Activity) parent.getContext();
TextView dgf = (TextView) activitys.findViewById(R.id.tekzArab);
dgf.setTextSize(14);
break;
default:
Activity activityu = (Activity) parent.getContext();
TextView dgx = (TextView) activityu.findViewById(R.id.tekzArab);
dgx.setTextSize(24);
break;
}
}
@Override
public void onNothingSelected (AdapterView <?> arg0){
// TODO Auto-generated method stub
} }
SettingsFont.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/reldoa"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="3dp"
android:background="@android:color/white"
android:orientation="vertical">
<TextView
android:id="@+id/sizedoa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingTop="5dp"
android:text="Ukuran Font"
android:textColor="#222222"
android:textSize="18sp" />
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" />
</RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/reldoa"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="3dp"
android:background="@android:color/white"
android:orientation="vertical">
<TextView
android:id="@+id/sizelatin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingTop="5dp"
android:text="Jenis Font"
android:textColor="#222222"
android:textSize="18sp" />
<Spinner
android:id="@+id/spinner2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:entries="@array/type_arrays"
android:prompt="@string/type_font"/>
</RelativeLayout>
<!-- Font latin -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relLatin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="35dp"
android:background="@android:color/white"
android:orientation="vertical">
<TextView
android:id="@+id/fontLatin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:paddingBottom="15dp"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="Font Latin"
android:textColor="#226169"
android:textSize="20sp" />
</RelativeLayout>
Большое спасибо за вашу помощь!
[ОБНОВЛЕНИЕ КОДА] Обновите код с кодом, полученным от @Pedro Massango
public class FontSettings extends AppCompatActivity {
private Spinner spinner1, spinnerLatin;
private SharedPreferences mMyPrefs;
private SharedPreferences.Editor mMyEdit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_font);
// toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//this line shows back button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//Display data size teks arab in dropdown list spinner
final Spinner spinnerBackgroundChange = (Spinner)findViewById(R.id.spinner1);
ArrayAdapter<CharSequence> spinnerArrayAdapter = ArrayAdapter.createFromResource(this, R.array.country_arrays, android.R.layout.simple_spinner_item);
spinnerArrayAdapter.setDropDownViewResource(R.layout.textview_with_background);
spinnerBackgroundChange.setAdapter(spinnerArrayAdapter);
spinnerBackgroundChange.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
SharedPreferences sharedPref = getSharedPreferences("My_Prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPref.edit();
editor.putInt("spinnerValue", spinnerBackgroundChange.getSelectedItemPosition());
editor.apply();
if (position == 1) {
int lastSelectedPosition = sharedPref.getInt("spinnerValue", 1);
spinnerBackgroundChange.setSelection(lastSelectedPosition);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
//Display data size teks latin in dropdown list spinner
Spinner spinnerLatin = (Spinner)findViewById(R.id.spinnerLatin);
ArrayAdapter<CharSequence> spinnerArrayLatin = ArrayAdapter.createFromResource(this, R.array.country_arrays, android.R.layout.simple_spinner_item);
spinnerArrayLatin.setDropDownViewResource(R.layout.textview_with_background);
spinnerLatin.setAdapter(spinnerArrayLatin);
// spinnerLatin default value
spinnerLatin.setSelection(1);
addListenerOnSpinnerItemSelection();
addListenerOnSpinner2ItemSelection();
}
public void addListenerOnSpinnerItemSelection() {
spinner1 = (Spinner) findViewById(R.id.spinner1);
spinner1.setOnItemSelectedListener(new SizeArabFont());
}
public void addListenerOnSpinner2ItemSelection() {
spinnerLatin = (Spinner) findViewById(R.id.spinnerLatin);
spinnerLatin.setOnItemSelectedListener(new SizeLatinFont());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
} }
Я использую этот код, и он работает для меня.Чтобы сохранить выбранное значение счетчика:
final SharedPreferences sharedPref = getSharedPreferences("My_Prefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor0 = sharedPref.edit();
editor0.putInt("VALUE", spinnerBackgroundChange.getSelectedItemPosition());
editor0.commit();
И загрузить или получить выбранное значение счетчика:
spinnerBackgroundChange.setSelection(sharedPref.getInt("VALUE", 6));