2012-03-22 4 views
0

Я внедрил приложение с несколькими флажками с несколькими макетами. Я невидимый макеты, когда пользователь отключил соответствующий флажок. Затем я пытаюсь сохранить содержимое и настройки при повторном запуске приложения.Как сохранить измененный контент в представлении содержимого Android?

Я реализовал код следующим образом:

public class MultipleControllsActivity extends Activity { 
/** Called when the activity is first created. */ 

LinearLayout l1,l2,l3; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    l1 = ((LinearLayout)findViewById(R.id.linearLayout1)); 
    l2 = ((LinearLayout)findViewById(R.id.linearLayout2)); 
    l3 = ((LinearLayout)findViewById(R.id.linearLayout3)); 

    ((CheckBox)findViewById(R.id.checkBox1)).setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if(!isChecked){ 
      l1.setVisibility(View.GONE);  
      } 
     } 
    }); 


    ((CheckBox)findViewById(R.id.checkBox2)).setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      l2.setVisibility(View.GONE); 
     } 
    }); 


    ((CheckBox)findViewById(R.id.checkBox3)).setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      l3.setVisibility(View.GONE); 
     } 
    }); 


    ((Button)findViewById(R.id.saveTemp)).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      //Save the content code here 

     } 
    }); 

} 

}

Когда я нажимаю на кнопку saveTemp тогда я хотел бы сохранить содержимое, и если пользователь повторно запустить приложение затем сохраненный контент появится.

пожалуйста, любое тело помочь мне ...

+0

Не могли бы вы объяснить вам более живо. Насколько я понимаю, вы хотите сохранить состояние CheckBox, чтобы в следующий раз, когда пользователь запускает приложение, он должен начинаться как есть. Это правильно или вы имели в виду что-то еще? –

+0

да, я имею в виду, что –

ответ

3

Вы можете использовать

SharedPreferences

http://developer.android.com/reference/android/content/SharedPreferences.html

используйте: -

 public class MultipleControllsActivity extends Activity { 
    /** Called when the activity is first created. */ 

    LinearLayout l1,l2,l3; 



    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    SharedPreferences pref_settings; 
    pref_settings = getSharedPreferences("DATA", Context.MODE_PRIVATE); 
     l1 = ((LinearLayout)findViewById(R.id.linearLayout1)); 
     l2 = ((LinearLayout)findViewById(R.id.linearLayout2)); 
     l3 = ((LinearLayout)findViewById(R.id.linearLayout3)); 
l1.setVisibility(pref_settings.getInt("l1", 0)); 
l2.setVisibility(pref_settings.getInt("l2", 0)); 
l2.setVisibility(pref_settings.getInt("l3", 0)); 

     ((CheckBox)findViewById(R.id.checkBox1)).setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       if(!isChecked){ 
       l1.setVisibility(View.GONE);  
       } 
      } 
     }); 


     ((CheckBox)findViewById(R.id.checkBox2)).setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       l2.setVisibility(View.GONE); 
      } 
     }); 


     ((CheckBox)findViewById(R.id.checkBox3)).setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       l3.setVisibility(View.GONE); 
      } 
     }); 


     ((Button)findViewById(R.id.saveTemp)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       SharedPreferences pref_settings; 
    pref_settings = getSharedPreferences("DATA", Context.MODE_PRIVATE); 
      SharedPreferences.Editor editor = pref_settings.edit(); 


       editor.putInt("l1", l1.getVisibility()); 
    editor.putInt("l2", l2.getVisibility()); 
    editor.putInt("l3", l3.getVisibility()); 

       editor.commit(); 

      } 
     }); 

    } 
0

Вот пример что я реализовал с помощью ListView List с несколькими вариантами, даже t поджилки я не использую CheckBoxes непосредственно вы можете получить некоторое представление о том, как идти вперед .. Вы можете сохранить свои предпочтения, как это ...

public void SaveSelections() { 
    SharedPreferences sp = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = sp.edit(); 
    String savedItems = getSavedItems(); 
    prefEditor.putString(LOAD_LIST, savedItems); 
    prefEditor.commit(); 
} 

private String getSavedItems() { 
    String savedItems = ""; 
    int count = listView.getAdapter().getCount(); 
    for (int i = 0; i < count; i++) { 
     if (listView.isItemChecked(i)) { 
      if (savedItems.length() > 0) { 
       savedItems += "," + listView.getItemAtPosition(i); 
      } else { 
       savedItems += listView.getItemAtPosition(i); 
      } 
     } 
    } 
    return savedItems; 
} 

Вот метод для загрузки вашего выбора ..

private void LoadSelections() { 
     SharedPreferences sp = getPreferences(MODE_PRIVATE); 
     if (sp.contains(LOAD_LIST)) { 
      String savedItems = sp.getString(LOAD_LIST, ""); 
      this.selectedItems.addAll(Arrays.asList(savedItems.split(","))); 
      int count = this.listView.getAdapter().getCount(); 
      for (int i = 0; i < count; i++) { 
       String currentItem = (String) listView.getAdapter().getItem(i); 
       if (this.selectedItems.contains(currentItem)) { 
        this.listView.setItemChecked(i, true); 
       } 

      } 
     } 
    } 

Затем в OnCreate LoadSelections вызова(), как это так, что ...

Bundle b = new Bundle(); 
checkedItems = listView.getCheckedItemPositions(); 
final int checkedItemsCount = checkedItems.size(); 
lst = new ArrayList<String>(); 
for (int i = 0; i < checkedItemsCount; ++i) { 
// This tells us the item position we are looking at 
final int position = checkedItems.keyAt(i); 
final String str2 = (String) listView.getItemAtPosition(position); 
lst.add(str2); 
} 
SaveSelections(); 

Наконец называют LoadSelections в OnCreate как этот

LoadSelections();

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