#android #preferences
#Android #настройки
Вопрос:
У меня проблема с настройками. Я создал этот простой проект: start.java:
package example.ex;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class start extends Activity {
Intent intent;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void preferences (View view){
intent = new Intent(getApplicationContext(), Preferences.class);
startActivity(intent);
}
}
Preferences.java:
package example.ex;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Preferences extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
основное действие — это запуск, из которого мы переходим (с помощью кнопки) к настройкам.
Настройки отображают настройки (список с всплывающим окном).
Макет: main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="preferences"
android:onClick="preferences" />
</LinearLayout>
preferenze.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableRow>
<TextView
android:text="List Selection:"
android:paddingRight="5px"
/>
<TextView android:id="@ id/list"
/>
</TableRow>
</TableLayout>
в значениях, которые я ставлю arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="country">
<item>U.S. (United States of America)</item>
<item>Italia (Italy)</item>
</string-array>
<string-array name="codice_paese">
<item>US</item>
<item>IT</item>
</string-array>
</resources>
Наконец, я создал preferences.xml (в папке xml в res) :
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Simple Preferences">
<ListPreference android:key="list" android:title="Selection Dialog"
android:summary="Click to pop up a list to choose from"
android:entries="@array/country" android:entryValues="@array/codice_paese"
android:dialogTitle="Choose a country" />
</PreferenceCategory>
</PreferenceScreen>
затем: у меня есть main, а затем я перехожу на страницу настроек.
Я хотел бы перейти непосредственно к основным настройкам (вместо кнопки) и использовать одно действие
но я никак не могу этого сделать .. пожалуйста, у вас есть какие-либо предложения? Спасибо!
Ответ №1:
попробуйте что-то подобное, используя SharedPreferences
и Spinner
вместо
package com.example.spinnerpref;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;
public class SpinnerPref extends Activity
{
int countrypos;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
countrypos = prefs.getInt("countrypos", 0);
setContentView(R.layout.main);
Spinner countryspinner = (Spinner) findViewById(R.id.country);
ArrayAdapter<CharSequence> countryadapater = ArrayAdapter.createFromResource(
this, R.array.country, android.R.layout.simple_spinner_item);
countryadapater.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
countryspinner.setAdapter(countryadapater);
countryspinner.setOnItemSelectedListener(new countrySelector());
class countrySelector implements OnItemSelectedListener
{
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
{
countrypos = pos;
}
public void onNothingSelected(AdapterView<?> parent) {}
}
PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
.edit().putInt("countrypos", countrypos).commit();
}
}
что-то в этом роде должно быть более аккуратным для того, что вы делаете.
Комментарии:
1. обязательно обновите main.xml и strings.xml соответственно. я знаю, что мне было не очень хорошо с этим, но я не хотел тратить на это кучу времени из-за того, что вы, возможно, даже не увидите это / вам это больше не понадобится, поэтому дайте мне знать, если у вас возникнут вопросы по любому из этого, и я уточню.