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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
7xc
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 3
#1

Сохранить "положение" checkbox'a - Android

26.02.2012, 21:18. Просмотров 2209. Ответов 7
Метки нет (Все метки)

Добрый вечер ! У меня возникла трудность с сохранением чекбоксов, в том положении, как они были нажаты при переключении на другую активность(будь то возвращение назад или домой). У меня в опроснике имеется мой кастомный ListView, где на каждой строке рядом с вопросом стоит чекбокс.

сам вид

XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
 
 
 
 
<LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="2dp">
    
    <TextView 
        android:id="@+id/textView_large"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        
        android:textSize="15sp">
    </TextView>
    <TextView 
        android:id="@+id/textView_small"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="12sp">
    </TextView>
    </LinearLayout>
 
 
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:padding="2dp" >
 
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checkBxc">
            
        </CheckBox>
    </LinearLayout>
</LinearLayout>
и Java код

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
public class Main extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        setListAdapter(new MyAdapter(this,
                android.R.layout.simple_list_item_2, R.id.textView_large,
                getResources().getStringArray(R.array.questions)));
        
 
    }
    
    
    private class MyAdapter extends ArrayAdapter<String> {
 
        public MyAdapter(Context context, int resource, int textViewResourceId,
                String[] strings) {
            super(context, resource, textViewResourceId, strings);
        }
        
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View row = inflater.inflate(R.layout.list_item, parent, false);
            String[] items = getResources().getStringArray(R.array.questions);
            String[] itemsSmall = getResources().getStringArray(R.array.questions_small);
            CheckBox chk = (CheckBox) row.findViewById(R.id.checkBxc);
            TextView txtLarge = (TextView) row.findViewById(R.id.textView_large);
            
            TextView txtSmall = (TextView) row.findViewById(R.id.textView_small);
            
            txtLarge.setText(items[position]);
            txtSmall.setText(itemsSmall[position]);
            return row;
        
        
    }
}
}
Как сохранить выделенные боксы, если я захочу перейти на другую активность?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 21:18     Сохранить "положение" checkbox'a
Посмотрите здесь:

Android EditText и добавление символов в него через собственную "клавиатуру"
Android Как заставить Eclipse "забыть" об ошибках в xml файлах?
Unexpected namespace prefix "map" found for tag fragment Android
Android virtual device. При нажатии на "Ок" ничего не происходит Android
Android Осуществить парсинг JSON с помощью готового макета "VKApiMessage"
Что такое "кэш" в android? Как можно программно сохранить что-то в кэш? Android
Визуализация нажатия на изображение. Как поставить картинку на "нажатие" Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
27.02.2012, 15:12     Сохранить "положение" checkbox'a #2
сохранить что бы по возврату(перезагрузке приложения) вернуть на место значения или что бы передать значения на другую активити?
7xc
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 3
27.02.2012, 17:46  [ТС]     Сохранить "положение" checkbox'a #3
Цитата Сообщение от NiRamz Посмотреть сообщение
сохранить что бы по возврату(перезагрузке приложения) вернуть на место значения или что бы передать значения на другую активити?
По возврату(перезагрузке приложения). Чтобы, если юзер кликнул return кнопку, или переключился с вопросов группы А на вопросы группы Б, положение чекбоксов было сохранено.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
27.02.2012, 18:19     Сохранить "положение" checkbox'a #4
в сторону SharedPreferences посмотрите.
7xc
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 3
27.02.2012, 18:28  [ТС]     Сохранить "положение" checkbox'a #5
Да в том то и дело, что ни перегрузка onSaveInstanceState и onRestoreInstanceState, ни shared preferences не работают..

Может я конечно что не так прописываю, вот методы из реализации, что я пробовал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        
        outState.putBoolean("MyBoolean", true);
          super.onSaveInstanceState(outState);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle state) {
        
        super.onRestoreInstanceState(state);
          boolean myBoolean = state.getBoolean("MyBoolean");
 
    }
и из onCreate()
Java
1
2
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        boolean silent = settings.getBoolean("silentMode", false);
+
Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
    protected void onStop() {
        
        super.onStop();
        
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean("silentMode", true);
 
        // Commit the edits!
        editor.commit();
    }
Не знаю, играет какую-либо роль ListView здесь. Учитывая что у меня на каждой строке по чекбоксу, может луп какой надо или что.. 2й день пытаюсь заставить сохранять и ни в какую =/
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
02.05.2013, 03:22     Сохранить "положение" checkbox'a #6
Тоже столкнулся с этой проблемой ищу ответ..
Vladimirys
298 / 195 / 22
Регистрация: 16.01.2010
Сообщений: 549
02.05.2013, 08:33     Сохранить "положение" checkbox'a #7
Пробуйте сохранять в onPause. Потому как onStop может и не вызываться.

Java
1
2
3
4
5
6
7
protected void onPause(){
        super.onPause();
 
        SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);
        SharedPreferences.Editor editor = settings.edit();
        ......................
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2013, 13:48     Сохранить "положение" checkbox'a
Еще ссылки по теме:

Почему приложение может пропасть из "Похожие" топового приложения? Android
Как сохранить данные при свертывании аппаратной кнопкой "Back"? Android
Как сохранить состояние выделенных checkbox и list data в Listactivity? Android
Notification вывод строки с символами перехода на новую строку "\n" Android
Услуга - "поругайте мой код" есть тут такая?) Android

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

Или воспользуйтесь поиском по форуму:
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
07.05.2013, 13:48     Сохранить "положение" checkbox'a #8
Вот рабочий код, chekbox там тоже есть
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
package ua.android.testandro;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ToggleButton;
 
public class SecondActivity extends Activity {
    
    public EditText getsTest;
    public ToggleButton togBut;
    public CheckBox chBox;
    public SharedPreferences mSet;
    public static final String DATA_SEND = "username";
    public static final String NAME_PREFERENCES = "mysetting";
    public static final String BOOL_TOGGLE = "togglebuton";
    public static final String BOOL_CHECKBOX = "checkboxset";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        mSet = getSharedPreferences(NAME_PREFERENCES, Context.MODE_PRIVATE);
        
        String user = "Name";
        user = getIntent().getStringExtra(DATA_SEND);
        getsTest = (EditText)findViewById(R.id.editTextGets);
        togBut = (ToggleButton)findViewById(R.id.toggleButton1);
        chBox = (CheckBox)findViewById(R.id.checkBox1);
        getsTest.setText(user); 
        if(mSet.contains(DATA_SEND)){getsTest.setText(mSet.getString(DATA_SEND, ""));}
        if(mSet.contains(BOOL_TOGGLE)){togBut.setChecked(mSet.getBoolean(BOOL_TOGGLE, false));}
        if(mSet.contains(BOOL_CHECKBOX)){chBox.setChecked(mSet.getBoolean(BOOL_CHECKBOX, false));} //Загрузка последнего сохраненного значения чекбокса, если последнего нет то ставится false
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.second, menu);
        return true;
    }
    
    @Override
    protected void onStop()
    {
        super.onStop();
        //SharedPreferences mSet;
        mSet = getSharedPreferences(NAME_PREFERENCES, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = mSet.edit();
        editor.putString(DATA_SEND, getsTest.getText().toString());
        editor.putBoolean(BOOL_TOGGLE, togBut.isChecked()); 
        editor.putBoolean(BOOL_CHECKBOX, chBox.isChecked()); //Чекбокс сохранение значения при выходе из приложения-/-активности
        editor.commit();
    }
 
}
Yandex
Объявления
07.05.2013, 13:48     Сохранить "положение" checkbox'a
Ответ Создать тему
Опции темы

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