2015-10-19 1 views
0

У меня есть эта активность, которая передаст значения с использованием намерения mainactivity и попыталась подтолкнуть ее, чтобы увидеть, прошла ли она значения, и я достиг ее!
Означает его работу, а также я сохраняю эти значения в textview с помощью sharedpreferences. но когда я закрою приложение и попробую снова использовать тост, чтобы проверить, есть ли у него значения из другого действия, не используя намерение, тост ничего не отображает.Общие предпочтения, переданные другому действию навсегда, даже при закрытии приложения

Есть ли способ сохранить его на mainactivity на постоянной основе, используя также общие привилегии?

EDIT

MainActivity

SA prefcontacts; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Intent intent = getIntent(); 
    final String prefcon1 = intent.getStringExtra("prefcon1"); 
    final String prefcon2 = intent.getStringExtra("prefcon2"); 
    final String prefcon3 = intent.getStringExtra("prefcon3"); 
    final String prefcon4 = intent.getStringExtra("prefcon4"); 
    final String prefcon5 = intent.getStringExtra("prefcon5");  

    Button show = (Button)findViewById(R.id.button3); 

    show.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      Toast.makeText(getApplicationContext(), prefcon1, Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), prefcon2, Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), prefcon3, Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), prefcon4, Toast.LENGTH_SHORT).show(); 
      Toast.makeText(getApplicationContext(), prefcon5, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

SA.class

EditText et1, et2, et3, et4, et5; 

Button btnSave; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_s); 
    btnSave = (Button)findViewById(R.id.btnSave); 



    et1 = (EditText)findViewById(R.id.editText1); 
    et2 = (EditText)findViewById(R.id.editText2); 
    et3 = (EditText)findViewById(R.id.editText3); 
    et4 = (EditText)findViewById(R.id.editText4); 
    et5 = (EditText)findViewById(R.id.editText5); 

    SharedPreferences settings = getSharedPreferences("MY_PREFS", 0); 
    et1.setText(settings.getString("prefcon1", "")); 
    et2.setText(settings.getString("prefcon2", "")); 
    et3.setText(settings.getString("prefcon3", "")); 
    et4.setText(settings.getString("prefcon4", "")); 
    et5.setText(settings.getString("prefcon5", "")); 

    btnSave.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      finish(); 
      Toast.makeText(getApplicationContext(), "Preferences Saved!", Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent (SA.this, MainActivity.class); 
      intent.putExtra("prefcon1", et1.getText().toString()); 
      intent.putExtra("prefcon2", et2.getText().toString()); 
      intent.putExtra("prefcon3", et3.getText().toString()); 
      intent.putExtra("prefcon4", et4.getText().toString()); 
      intent.putExtra("prefcon5", et5.getText().toString()); 
      startActivity(intent); 

     } 
    }); 
} 
+0

Возможные дубликат [Как использовать SharedPreferences в Android хранить, получать и редактировать значения] (http://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit-values) –

+0

С образцами из этой ссылки сохраните свои данные в prefs в действии 1 и получите их в mainactivity –

+0

общий код. | Если вы используете saharedprefrences, вам не нужно передавать его в другое приложение, оно доступно для всего приложения. – Gaurav

ответ

0

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

Если вы собираетесь сохранять данные в SharedPreference, тогда нет смысла передавать его через Intent (если вы используете commit(), а не apply()).

+1

* Если вы собираетесь сохранять данные в SharedPreference, тогда нет смысла передавать его через Intent. * Не можете быть уверены в этом. В зависимости от того, будете ли вы писать prefs с помощью 'commit()' или 'apply()', prefs могут быть недоступны еще при создании нового действия –

+0

Да. Полностью забыл об этом. Благодарю. – Henry

2

isted из

intent.putExtra("prefcon1", et1.getText().toString()); 
      intent.putExtra("prefcon2", et2.getText().toString()); 
      intent.putExtra("prefcon3", et3.getText().toString()); 
      intent.putExtra("prefcon4", et4.getText().toString()); 
      intent.putExtra("prefcon5", et5.getText().toString()); 

// PUT

SharedPreferences.Editor editor = s.edit(); 
     editor.putString(); 
     editor.commit("prefcon2", et2.getText().toString()); 
     editor.commit("prefcon3", et3.getText().toString()); 
     editor.commit("prefcon4", et4.getText().toString()); 
     editor.commit("prefcon5", et5.getText().toString()); 
editor.commit(); 
Смежные вопросы