Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
lifeforce
111 / 71 / 15
Регистрация: 27.09.2010
Сообщений: 528
#1

Как чекнуть радиобаттон (в радиогруппе) из настроек? - Android

21.02.2016, 22:16. Просмотров 379. Ответов 10
Метки нет (Все метки)

Всем привет!
целый день пытаюсь получить при старте программы в радио-группе "чекнутый" определенный радио-бутон из настроек.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.StringRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.Toast;
 
 
public class MainSettingsActivity extends AppCompatActivity {
 
    // имя настройки
    public static final String APP_PREFERENCES = "Startsettings";
    public static final String APP_PREFERENCES_MAPSET = "Mapset";
    public static final String APP_PREFERENCES_SEARCHSET = "SearchSet";
    SharedPreferences StSettings;
    private SharedPreferences M;
// String ms = StSettings.getString(APP_PREFERENCES_MAPSET,"radio_map");
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_settings);
        //  int m = (StSettings.getInt(APP_PREFERENCES_MAPSET,0));
        M = getSharedPreferences (APP_PREFERENCES_MAPSET,Context.MODE_PRIVATE);
        RadioGroup radio = (RadioGroup)findViewById(R.id.radioGroupSelectMap );
        radio.check(R.id.radio_map);
        //radio.check(R.id.ms);
        //radio.check(M.);
       // int selectedTest = radio.getCheckedRadioButtonId();
 
    }
 
 
}
если на прямую указать айди то все правильно
Java
1
radio.check(R.id.radio_map);
но при старте мне надо чтоб отмечался бутон который был запомнен в настройках типа
XML
1
radio_sat
Миниатюры
Как чекнуть радиобаттон (в радиогруппе) из настроек?  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2016, 22:16     Как чекнуть радиобаттон (в радиогруппе) из настроек?
Посмотрите здесь:

Изменение настроек Android
Сохранение настроек в SQLite Android
Android AlertDialog - сохранение позиции выбранной радиобаттон
Как достучаться до системных настроек? Android
Android Окно настроек. ListPreference
Хранение настроек пользователя Android
Android Как в пункте сис. настроек в кратком описании (summary) указывать свое значение?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2236 / 1809 / 563
Регистрация: 12.05.2014
Сообщений: 6,448
Завершенные тесты: 1
22.02.2016, 12:24     Как чекнуть радиобаттон (в радиогруппе) из настроек? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
а чесли запоминать не текст, а позицию, а потом делать?
Java
1
((RadioButton) radio.getChildAt(1)).setChecked(true);
lifeforce
111 / 71 / 15
Регистрация: 27.09.2010
Сообщений: 528
22.02.2016, 12:40  [ТС]     Как чекнуть радиобаттон (в радиогруппе) из настроек? #3
Паблито,
и это тоже интересная идея! типа как индекс в С++
тогда как мне сохранить позицию(индекс)?
не сработало в таком варианте

Java
1
2
3
4
5
        int m = (StSettings.getInt(APP_PREFERENCES_MAPSET,0));
 
        RadioGroup radio = (RadioGroup)findViewById(R.id.radioGroupSelectMap );
 
        ((RadioButton) radio.getChildAt(m)).setChecked(true);
Паблито
2236 / 1809 / 563
Регистрация: 12.05.2014
Сообщений: 6,448
Завершенные тесты: 1
22.02.2016, 12:44     Как чекнуть радиобаттон (в радиогруппе) из настроек? #4
int m = (StSettings.getInt(APP_PREFERENCES_MAPSET,0));
тут наверное не APP_PREFERENCES_MAPSET должно быть, а строка - название поля для position
lifeforce
111 / 71 / 15
Регистрация: 27.09.2010
Сообщений: 528
22.02.2016, 12:59  [ТС]     Как чекнуть радиобаттон (в радиогруппе) из настроек? #5
добавил поле
и все работает!
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class MainSettingsActivity extends AppCompatActivity {
 
    // имя настройки
    public static final String APP_PREFERENCES = "Startsettings";
    public static final String MAPSET = "Mapset";
    public static final String SEARCHSET = "SearchSet";
    private SharedPreferences MapSettings;
    
    //SharedPreferences StSettings;
    //private SharedPreferences M;
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_settings);
 
        MapSettings = getSharedPreferences(MAPSET, Context.MODE_PRIVATE);
 
        int m = MapSettings.getInt(MAPSET,0);
 
        RadioGroup radio = (RadioGroup)findViewById(R.id.radioGroupSelectMap );
 
        ((RadioButton) radio.getChildAt(m)).setChecked(true);
 
    }
 
}


ну а как сохранить позицию?
Паблито
2236 / 1809 / 563
Регистрация: 12.05.2014
Сообщений: 6,448
Завершенные тесты: 1
22.02.2016, 13:06     Как чекнуть радиобаттон (в радиогруппе) из настроек? #6
Java
1
2
        int id = radio.getCheckedRadioButtonId();
        int position = radio.indexOfChild(radio.findViewById(id));
ну и потом position класть в SharedPreferences
lifeforce
111 / 71 / 15
Регистрация: 27.09.2010
Сообщений: 528
22.02.2016, 14:36  [ТС]     Как чекнуть радиобаттон (в радиогруппе) из настроек? #7
спасибо!

Добавлено через 1 час 25 минут
Паблито,
Фуф!
или я неправильно создал клик листенер или не знаю куда его поставить.
в активити с настройками не ставиться

Java
1
2
3
4
5
6
7
8
9
10
11
12
    RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
    RadioGM.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RadioGroup radio = (RadioGroup)findViewById(R.id.radioGroupSelectMap );
            int id = radio.getCheckedRadioButtonId();
            int position = radio.indexOfChild(radio.findViewById(id));
            SharedPreferences.Editor map = MapSettings.edit();
            map.putInt(MAPSET, position);
            map.apply();
        }
    });
сразу ошибка в этой строке
Java
1
RadioGM.setOnClickListener
в главном активити main ставиться но приложение вылетает на старте с ошибкой.

не подскажешь что я не так делаю?

Добавлено через 4 минуты
создал он резум в активити настроек все пошло .
но не запоминаются настройки?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    @Override
    protected void onResume() {
        super.onResume();
        RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
        RadioGM.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                RadioGroup radio = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
                int id = radio.getCheckedRadioButtonId();
                int position = radio.indexOfChild(radio.findViewById(id));
                SharedPreferences.Editor map = MapSettings.edit();
                map.putInt(MAPSET, position);
                map.apply();
            }
        });
     }
Паблито
2236 / 1809 / 563
Регистрация: 12.05.2014
Сообщений: 6,448
Завершенные тесты: 1
22.02.2016, 15:52     Как чекнуть радиобаттон (в радиогруппе) из настроек? #8
код бы весь увидеть

и все это из onResume можно быол спокойно писать в onCreate + не делать два раза
RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
RadioGroup radio = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
lifeforce
111 / 71 / 15
Регистрация: 27.09.2010
Сообщений: 528
22.02.2016, 15:56  [ТС]     Как чекнуть радиобаттон (в радиогруппе) из настроек? #9
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.StringRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
 
 
public class MainSettingsActivity extends AppCompatActivity {
    int ms=0;
    int ss=0;
    //int id=0;
    //int position=0;
    // имя настройки
    public static final String PREFERENCES = "Startsettings";
    public static final String MAPSET = "Mapset";
    public static final String SEARCHSET = "SearchSet";
    private SharedPreferences MapSettings;
    private SharedPreferences SearchSet;
    private SharedPreferences Pref;
 
   // RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
    //RadioGroup radio = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
    // int id = RadioGM.getCheckedRadioButtonId();
    // int position = RadioGM.indexOfChild(RadioGM.findViewById(id));
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_settings);
 
        MapSettings = getSharedPreferences(MAPSET, Context.MODE_PRIVATE);
        SearchSet =   getSharedPreferences(SEARCHSET, Context.MODE_PRIVATE);
        ms = MapSettings.getInt(MAPSET,0);
        ss = SearchSet.getInt(SEARCHSET,0);
 
    }
 
   @Override
    protected void onResume() {
        super.onResume();
       Toast.makeText(MainSettingsActivity.this, "onResume", Toast.LENGTH_SHORT).show();
       RadioGroup radioM = (RadioGroup)findViewById(R.id.radioGroupSelectMap );
       ((RadioButton) radioM.getChildAt(ms)).setChecked(true);
 
       RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
       RadioGroup RadioGS = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
 
       int idm = RadioGM.getCheckedRadioButtonId();
       int positionm = RadioGM.indexOfChild(RadioGM.findViewById(idm));
 
       int ids = RadioGS.getCheckedRadioButtonId();
       int positions = RadioGS.indexOfChild(RadioGS.findViewById(ids));
 
       if(ms == positionm)
       {
           SharedPreferences.Editor map = MapSettings.edit();
           map.putInt(MAPSET, positionm);
           map.apply();
       }
 
     }
}
сосем с этими экспериментами - запутался
Паблито
22.02.2016, 16:06
  #10

Не по теме:

Цитата Сообщение от lifeforce Посмотреть сообщение
private SharedPreferences MapSettings; private SharedPreferences SearchSet; private SharedPreferences Pref;
зачем заводить разные, можно все хранить в одном файле

и весь остальной код - бред сивой кобылы
я сливаюсь с темы, пусть кто-то другой носится и объясняет

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2016, 18:30     Как чекнуть радиобаттон (в радиогруппе) из настроек?
Еще ссылки по теме:

Data Backup -как получить адрес файла стандартных настроек Android
Как сделать часть настроек неактивными Android
Защита настроек от пользователя Android
Android Хранение настроек
Не могу создать чекбокс и радиобаттон Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
lifeforce
111 / 71 / 15
Регистрация: 27.09.2010
Сообщений: 528
22.02.2016, 18:30  [ТС]     Как чекнуть радиобаттон (в радиогруппе) из настроек? #11
Паблито,
спасибо за помощь!
возможно кто-то и разберется в этом страшном коде.

Добавлено через 2 часа 20 минут
решил

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.StringRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
 
 
public class MainSettingsActivity extends AppCompatActivity {
     int ms=0;
     int ss=0;
 
    // имя настройки
    public static final String PREFERENCES = "Startsettings";
    public static final String MAPSET = "Mapset";
    public static final String SEARCHSET = "SearchSet";
    private SharedPreferences MapSettings;
    private SharedPreferences SearchSet;
    private SharedPreferences Pref;
    private int selectedMap;
    private int selectedSearch;
 
    //RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
    //RadioGroup RadioGS = (RadioGroup) findViewById(R.id.radioGroupSelectSearch);
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_settings);
 
    }
 
   @Override
   public void onResume() {
        super.onResume();
 
       Toast.makeText(MainSettingsActivity.this, "чтение настроек", Toast.LENGTH_SHORT).show();
 
       MapSettings = getSharedPreferences(MAPSET, Context.MODE_PRIVATE);
       SearchSet =   getSharedPreferences(SEARCHSET, Context.MODE_PRIVATE);
       ms = MapSettings.getInt(MAPSET, 0);
       ss = SearchSet.getInt(SEARCHSET,0);
 
       RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
       ((RadioButton) RadioGM.getChildAt(ms)).setChecked(true);
 
       RadioGroup RadioGS = (RadioGroup) findViewById(R.id.radioGroupSelectSearch);
       ((RadioButton) RadioGS.getChildAt(ss)).setChecked(true);
 
 
     }
 
////////////=====///////////////////////////////////////////////////////////////////////////////////
    public void RadioSelectMap (View v){
        RadioGroup RadioGM = (RadioGroup) findViewById(R.id.radioGroupSelectMap);
        int idm = RadioGM.getCheckedRadioButtonId();
        selectedMap = RadioGM.indexOfChild(RadioGM.findViewById(idm));
        Toast.makeText(MainSettingsActivity.this, "запись выбора карты", Toast.LENGTH_SHORT).show();
        SharedPreferences.Editor map = MapSettings.edit();
        map.putInt(MAPSET, selectedMap);
        map.apply();
    }
/////////////=================///////////////////////===============////////////////////////////////
 
    public void RadioSellectSearch (View v){
        RadioGroup RadioGS = (RadioGroup) findViewById(R.id.radioGroupSelectSearch);
        int ids = RadioGS.getCheckedRadioButtonId();
        selectedSearch = RadioGS.indexOfChild(RadioGS.findViewById(ids));
        Toast.makeText(MainSettingsActivity.this, "запись выбора режима поиска", Toast.LENGTH_SHORT).show();
        SharedPreferences.Editor src = SearchSet.edit();
        src.putInt(SEARCHSET, selectedSearch);
        src.apply();
    }
 
}
а в xml файле всего лишь надо было добавить на радио кнопки
Java
1
2
3
4
5
  android:clickable="true"
 
            android:onClick="RadioSellectMap"
 
            android:onClick="RadioSellectSearch"
теперь все читает и записывает.
оставил чтение в onresume
может кто - то поможет сократить код? или более компактной записью.
Yandex
Объявления
22.02.2016, 18:30     Как чекнуть радиобаттон (в радиогруппе) из настроек?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru