0

Я новичок в андроид развитие я создал поле и как сохранить чек/снимите флажок с помощью акций предпочтенияКак применять общие предпочтения CheckBox

final Button add = (Button) findViewById(R.id.add); 
     add.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       addNewBubble(); 
       add.setEnabled(false); 
      } 
     }); 

     CheckBox checkBox = (CheckBox)findViewById(R.id.add_fb); 
     checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       isCheckedValue = isChecked; 

      } 
     }); 

    } 


private void addNewBubble() { 
     BubbleLayout bubbleView = (BubbleLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.bubble_layout, null); 
     bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() { 
      @Override 
      public void onBubbleRemoved(BubbleLayout bubble) { 
       finish(); 
       System.exit(0); 



      } 
     }); 
     bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() { 

      @Override 
      public void onBubbleClick(BubbleLayout bubble) { 
       Intent in = new Intent(MainActivity.this, PopUpWindow.class); 
       in.putExtra("yourBoolName", isCheckedValue); 
       startActivity(in); 

      } 
     }); 
     bubbleView.setShouldStickToWall(true); 
     bubblesManager.addBubble(bubbleView, 60, 20); 
    } 

Есть два Флажки в этом коде add и add_fb Я хочу чтобы сделать приложение помнит, если флажок проверены или незарегистрированный

+0

вы можете обратиться к этому ответу, если вы не знаете, как использовать 'sharedPreference' на всех http://stackoverflow.com/a/23024962/2792812 – himanshu1496

+0

Пожалуйста, объясните сценарий, который вы хотите сохранить данные и повторно использовать в запуске приложения или просто хотите передать ему другую деятельность. – Ramit

+0

@Ramit Да, эти флажки привязаны к кнопке в разных действиях, когда отмеченный флажок установлен, кнопка должна появиться (эти части позаботятся), но при входе в приложение флажок снят и кнопка не отображается. ... –

ответ

4
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final CheckBox checkBox = (CheckBox)findViewById(R.id.checkBox); 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
     final SharedPreferences.Editor editor = preferences.edit(); 
     if(preferences.contains("checked") && preferences.getBoolean("checked",false) == true) { 
      checkBox.setChecked(true); 
     }else { 
      checkBox.setChecked(false); 

     } 
     checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
       if(checkBox.isChecked()) { 
        editor.putBoolean("checked", true); 
        editor.apply(); 
       }else{ 
        editor.putBoolean("checked", false); 
        editor.apply(); 
       } 
      } 
     }); 
    } 
+0

Не могли бы вы отредактировать свой ответ и добавить объяснение того, как ваш код решает проблему? –

+0

Конечно, когда вы впервые входите в свое приложение и щелкаете checkbok, checkBox.setOnCheckedChangeListener (...) будет работать, и ваш sharedpreference будет держать проверочный ключ, значение которого истинно. И когда вы входите в свое приложение в следующий раз, вы уже сохранили выбранный ключ в своих предпочтениях. По этой причине if (...) утверждение истинно, и ваш флажок установлен. –

+0

@GunayAbdullayeva Даже если я снял флажок, в следующий раз, когда я вхожу в приложение, его показы, такие как окно, проверяются, почему это так? Код запоминает проверьте, что мы сделали, но он забывает о действии, которое он должен был сделать. –

0

при нажатии кнопки ОК кнопки, если флажок щелкнул

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putInt("myActivity", 0); 
    editor.commit(); 

И когда вы запускаете приложение и проверить, как это ..

int result; 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
    result = sharedPreferences.getInt("showActivity", -1); 
    if(result == 0) 
     // do not show the activity.. start the next activity 
0
final String FILE_NAME = "com.myproject.prefs"; 
final Boolean ADD = "add"; 
final Boolean ADD_FB = "add_fb"; 

// prefs file.. 
SharedPreferences prefs = getSharedPreferences(FILE_NAME, Activity.PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 

// by default both will be unchecked.. 
checkBoxAdd.setChecked(prefs.getBoolean(ADD, false); 
checkBoxAddFb.setChecked(prefs.getBoolean(ADD_FB, false); 

// now on checkedchancedEvent update the preferences 
checkBoxAdd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

     editor.putBoolean(ADD, isChecked); 
     editor.apply(); 


     } 
    }); 

// similary the second one... 
checkBoxAddFb.setOnCheckedChangeListener(new 
CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

     editor.putBoolean(ADD_FB, isChecked); 
     editor.apply(); 


     } 
    }); 

Обновлено

  • Здесь мы храним наши предпочтения в файле имя "com.myproject.prefs" , Нам нужно сохранить два значения предпочтений типа данных Boolean (один - add, другой - add_fb, как указано в Q).
  • Теперь получите SharePreferences и его объекты редактора.
  • Задайте значения checkBoxes из сохраненных настроек, если настройки не были добавлены до этого, установите их на false. Итак, в первый раз, когда вы запускаете приложение, они получат значения false, так как ранее не было добавленных значений.
  • Всякий раз, когда вы хотите, чтобы получить эти предпочтения значений
    pass your preferences file_name and mode to getSharedPreferences();
    // then use those objects to get any specific value like
    prefs.getBoolean(your_value_name, default_value);Уже упомянутый выше

  • Всякий раз, когда вы хотите изменить эти настройки значения используют SharedPreferences.Editor объект. Передайте свое значение и новое значение: putBoolean().
    как
    editor.putBoolean(your_value_name, true/false); затем примените редактирование.

Надежда, это помогает

+0

bro, не могли бы вы объяснить мне этот код –

+0

Хорошо, прочитайте обновленную часть – samirk433

Смежные вопросы