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

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

26.02.2012, 21:18. Просмотров 2739. Ответов 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;
        
        
    }
}
}
Как сохранить выделенные боксы, если я захочу перейти на другую активность?
http://www.cyberforum.ru/android-dev/thread1359885.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 21:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сохранить "положение" checkbox'a (Программирование Android):

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio"
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора...

При эмулировании вместо надписи "Hello world" отображается "android"
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил...

7
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
27.02.2012, 15:12 #2
сохранить что бы по возврату(перезагрузке приложения) вернуть на место значения или что бы передать значения на другую активити?
0
7xc
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 3
27.02.2012, 17:46  [ТС] #3
Цитата Сообщение от NiRamz Посмотреть сообщение
сохранить что бы по возврату(перезагрузке приложения) вернуть на место значения или что бы передать значения на другую активити?
По возврату(перезагрузке приложения). Чтобы, если юзер кликнул return кнопку, или переключился с вопросов группы А на вопросы группы Б, положение чекбоксов было сохранено.
0
NiRamz
211 / 211 / 33
Регистрация: 26.12.2010
Сообщений: 691
27.02.2012, 18:19 #4
в сторону SharedPreferences посмотрите.
0
7xc
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 3
27.02.2012, 18:28  [ТС] #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й день пытаюсь заставить сохранять и ни в какую =/
0
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
02.05.2013, 03:22 #6
Тоже столкнулся с этой проблемой ищу ответ..
0
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
02.05.2013, 08:33 #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();
        ......................
    }
0
cxemuch205
1 / 1 / 1
Регистрация: 31.10.2012
Сообщений: 46
07.05.2013, 13:48 #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();
    }
 
}
0
07.05.2013, 13:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2013, 13:48
Привет! Вот еще темы с решениями:

Что такое "кэш" в android? Как можно программно сохранить что-то в кэш?
что такое КЭШ в android? как можно программно сохранить что то в кэш??можете...

Как "превратить" string "6.971245e-001" во float?
Число конечно пример

Как прикрутить "свой браузер" к странице - "фрагмент"
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается...

Что означают конструкции "finally" и "throw new"?
Я с Java уже давно, но с этим столкнулся в первый раз. Объясните, пожалуйста,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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