2015-02-17 3 views
0

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

. То, что я хочу сделать, это сохранить текстовое представление, используя sharedprefeences.

В моем первом классе (xp) i, m отправляет текстовое представление в другой класс (обратная связь) Теперь обратная связь возвращает текст без каких-либо проблем, но никогда не сохраняет его. Как я могу сохранить это текстовое представление в классе (обратной связи) даже после закрытия приложения?

Вот класс, который intenting TextView

public class Xp extends Activity { 
Button accept; 
TextView textV; 
TextView xbnum; 
public static final String PREFS_NAME = "MyPrefsFile"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.xp); 
    accept = (Button) findViewById(R.id.accept); 
    textV = (TextView) findViewById(R.id.textV); 
    xbnum = (TextView) findViewById(R.id.xpnum); 


    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     String value1 = extras.getString("intent_xp"); 
     final String value = extras.getString("intent_extra"); 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor edit = settings.edit(); 
     edit.putString(PREFS_NAME, value); 
     edit.putString(PREFS_NAME,value1); 

     textV.setText(value); 
     xbnum.setText(value1); 


     edit.commit(); 
     accept.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(Xp.this, feedback.class); 
       i.putExtra("intent_extra", textV.getText().toString()); 
       startActivity(i); 
       finish(); 
      } 
     }); 


    } 
} 

} 

А вот это класс, который получим от намерения и сохранить TextView (как предполагалось)

public class feedback extends Activity { 
TextView test1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.feedback); 
    test1 = (TextView) findViewById(R.id.test1); 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     String value = extras.getString("intent_extra"); 
     SharedPreferences settings = getSharedPreferences("intent_pref", 0); 
     SharedPreferences.Editor edit = settings.edit(); 
     edit.putString("intent_pref",value); 
     test1.setText(value); 
     edit.apply(); 

    } 

} 

} 

Класс reciving текст , и все в порядке. Только когда я закрываю приложение и открываю его, все очищается.

+0

Если вы правильно поняли, вероятно, вам понадобятся общие * общие предпочтения, а не специальные настройки. –

+0

Почему вы используете разные имена SharedPreference? Что еще делает ваша обратная связь, кроме сохранения ценности? Вы когда-либо извлекали значения из SavedPreferences? – tachyonflux

+0

Я назвал sharedprefrences одним и тем же именем и не сохраняю. Пока я хочу, чтобы он сохранил это значение и покажу его там, позже я собираюсь добавить больше функций. –

ответ

0

Может быть, я ошибаюсь, но кажется, что вы пропустили понимание того, как работают общие настройки.

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

В вашем случае это означает, что создавать и в «обратной связи» и экземпляр «Xp» SharedPreferences как это:

SharedPreferences settings = getSharedPreferences("MyPrefsFile", SharedPreferences.MODE_PRIVATE); 

, а затем использовать этот экземпляр для хранения ДАННЫХ с редактором. Будьте осторожны, если вы не можете сохранить несколько значений для одного и того же ключа.

Вы также можете сохранить свое значение в нескольких файлах, как вы на самом деле делаете. Но если вы хотите установить текстовое изображение со значением вашего файла настроек, вам нужно получить его с помощью метода getString("key_of_your_value") на вашем экземпляре общих настроек.

+0

Я, извините, я попробовал все, что вы сказали, и все еще не работал. Я создал этот экземпляр в обоих классах, использовал одно и то же имя в обоих классах. Не работает. Я даже попробовал 'settings.getString' и все еще не работал. Я имею в виду, что это показывает, но никогда не спасает. Любое другое предложение, пожалуйста? –

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