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

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

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

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

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

Как сохранить данные при свертывании аппаратной кнопкой "Back"? - Программирование Android
Здравствуйте. Подскажите пожалуйста, как сохранить данные при нажатии аппаратной кнопки back в главном активити? Мне бы в идеале хотелось...

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

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

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

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

7
NiRamz
211 / 211 / 16
Регистрация: 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 / 16
Регистрация: 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
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 589
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
что такое КЭШ в android? как можно программно сохранить что то в кэш??можете дать ссылку??

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

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

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


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

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

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