2013-10-13 4 views
0

У меня есть ViewPager с тремя фрагментами. В первом фрагменте у меня есть кнопка, если вы нажмете два TextView с другим текстом. Если я перейду к третьему фрагменту, а затем вернусь к первому, не вижу ли больше TextView. Я понимаю, что вы должны использовать SharedPreferences, чтобы не потерять значение, тогда я сделал этот код, но он не работает.SharedPreferences для сохранения значения TextView?

TextView1=(TextView)view.findViewById(R.id.textView1); 
    TextView2=(TextView)view.findViewById(R.id.textView2; 



    Button b1 = (Button) view.findViewById(R.id.button1); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      // CODE HERE 

      SharedPreferences prefs = this.getSharedPreferences(
         "com.MyPackage.AppName", Context.MODE_PRIVATE);     
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putString("TextView1",TextView1.getText().toString()); 
       editor.putString("TextView2",TextView2.getText().toString()); 
       editor.commit(); 

} );

Почему это не работает? Если при закрытии приложения я хочу удалить значения, сохраненные в SharedPreferences, как я могу это сделать?

+0

Для первого вопроса попробуйте импортировать файл android.preference.PreferenceManager и использовать SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences (this); – istovatis

+0

@ Симон, пожалуйста, см. Мой ответ, он должен помочь вам – superuser

+0

@Simone Piglietti, пожалуйста, см. Мой ответ – superuser

ответ

0

Исправленный фрагмент кода. Я думаю, что, возможно, вы пропустили какой-то код, чтобы фактически восстановить сохраненные значения (получить из настроек по ключу и использовать setText) или не называть его в нужное время.

Попробуйте ввести такой код в переопределенный метод onResume вашей деятельности.

Необычно хранить состояние в ответ на нажатие кнопки. Подробнее о жизненном цикле активности и which methods are automatically called для вас в определенное время.

+0

Eclipse здесь, чтобы сообщить об ошибке -> getSharedPreferences Почему? –

0

Для записи в SharedPref вы можете использовать этот код:

String text = "Your text here";  
Context context = getApplicationContext(); 
AppPrefs appPrefs = new AppPrefs(context); 
appPrefs.setSessionId(text); 

Для чтения из SharedPref вы можете использовать это:

String textViewTextHolder = appPrefs.getSessionId(); 
0

Вы должны рассмотреть возможность использования статических переменных за то, что хочу сделать:

Пример статических переменных:

public static int i = 1; 

Чтобы получить доступ к этому в другой деятельности:

if(MainActivity.i == 1){ 
} 

если вы хотите придерживаться общих предпочтений по какой-либо причине, вы можете очистить их на приложение запуск, хотя я бы посоветовал не использовать общие предпочтения за то, что вы делаете.

+0

Вы бы посоветовали использовать общедоступные поля, к которым можно получить доступ в любом классе? – TEK

+0

@DHT да, для чего-то подобного, вот что я сделал бы. Затем фрагменты могут связываться друг с другом через эти переменные, и вам не нужно изменять общие настройки – superuser

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