2012-06-12 3 views
0

Je réalise une application Android qui a une activité principale et plusieurs autres. L'activité principale (ainsi que d'autres) charge les données de SharedPreferences. Mais, quand je lance une nouvelle activité, qui a quelques options qui peuvent changer les données dans SharedPreferences que j'utilise dans l'activité principale, et je retourne à l'activité principale en utilisant le bouton de retour, les données sont toujours les mêmes avant que je l'ai changé), de toute façon je dois recharger les données là de SharedPreferences une fois que je reviens à l'activité principale, comment est-ce possible ??? S'il vous plaît aidez-moi et merci d'avance!Rechargement des données SharedPreferences

Code Activité principale:

package com.mycompanyname.myappname; 

import java.util.Calendar; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class myActivity extends Activity implements OnClickListener { 
/** Called when the activity is first created. */ 
TextView nextAirFilterCleaningTextView, nextPistonChangingTextView, nextOilChangingTextView; 
Button manageButton; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //Import views 
    manageButton = (Button)findViewById(R.id.manageButton); 
    nextAirFilterCleaningTextView = (TextView)findViewById(R.id.nextAirFilterCleaningTextView); 
    nextPistonChangingTextView = (TextView)findViewById(R.id.nextPistonChangingTextView); 
    nextOilChangingTextView = (TextView)findViewById(R.id.nextOilChangingTextView); 

    //Setup onClickListener for the buttons 
    manageButton.setOnClickListener(this); 

    //Check if the user has been using his motorcycle 
    android.content.Context ctx = getApplicationContext(); 
    Intent i = new Intent(ctx, UsageActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    ctx.startActivity(i); 

    //Load first time use screen 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
    boolean previouslyStarted = prefs.getBoolean(getString(R.string.pref_previously_started), false); 
    if(!previouslyStarted){ 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putBoolean(getString(R.string.pref_previously_started), Boolean.TRUE); 
       edit.commit(); 
       android.content.Context ctx5 = getApplicationContext(); 
       Intent i5 = new Intent(ctx5, FirsttimeusageActivity.class); 
       i5.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       ctx5.startActivity(i5); 
} 

    //Load information from SharedPreferences 
    SharedPreferences settings = getSharedPreferences("settingsInfo", 0); 
    nextAirFilterCleaningTextView.setText("Next air filter cleaning: " + settings.getString("daysTillAirFilterCleaning", "") + " days"); 
    nextPistonChangingTextView.setText("Next piston changing: " + settings.getString("hoursTillPistonChange", "").toString() + " hours of usage left"); 
    nextOilChangingTextView.setText("Next oil changing: " + settings.getString("hoursTillOilChange", "").toString() + " hours of usage left"); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu meny) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menubuttons, meny); 
    return true; 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case R.id.NewEvent: 
     //Create new calendar event 
     Calendar cal = Calendar.getInstance();    
     Intent intent = new Intent(Intent.ACTION_EDIT); 
     intent.setType("vnd.android.cursor.item/event"); 
     intent.putExtra("beginTime", cal.getTimeInMillis()); 
     intent.putExtra("allDay", true); 
     intent.putExtra("rrule", "FREQ=YEARLY"); 
     intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000); 
     intent.putExtra("title", ""); 
     startActivity(intent); 
     break; 
    case R.id.About: 
     //Load about activity and screen 
     android.content.Context ctx6 = getApplicationContext(); 
     Intent i6 = new Intent(ctx6, AboutActivity.class); 
     i6.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     ctx6.startActivity(i6); 
     break; 
    case R.id.settings: 
     //Load settings activity and screen 
     android.content.Context ctx4 = getApplicationContext(); 
     Intent i4 = new Intent(ctx4, settingsActivity.class); 
     i4.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     ctx4.startActivity(i4); 
     break; 
    case R.id.Homepage: 
     //Load webpage by using custom activity 
     android.content.Context ctx = getApplicationContext(); 
     Intent i = new Intent(ctx, Activity.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     ctx.startActivity(i); 
     break; 
    case R.id.famoustracks: 
     android.content.Context ctx7 = getApplicationContext(); 
     Intent i7 = new Intent(ctx7, Activity.class); 
     i7.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     ctx7.startActivity(i7); 
     break; 
     } 
    return true; 
} 
public void onClick(View src) { 
    switch(src.getId()) { 
    case R.id.manageButton: 
     android.content.Context ctx1 = getApplicationContext(); 
     Intent i1 = new Intent(ctx1, ManageActivity.class); 
     i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     ctx1.startActivity(i1); 
     break; 
    } 
} 
} 
+0

mettre un peu de code ici. –

Répondre

1

Je l'ai fixé:

@Override 
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
    //Load information from SharedPreferences 
    SharedPreferences settings = getSharedPreferences("settingsInfo", 0); 
    nextAirFilterCleaningTextView.setText("Next air filter cleaning: " + settings.getString("daysTillAirFilterCleaning", "") + " days"); 
    nextPistonChangingTextView.setText("Next piston changing: " + settings.getString("hoursTillPistonChange", "").toString() + " hours of usage left"); 
    nextOilChangingTextView.setText("Next oil changing: " + settings.getString("hoursTillOilChange", "").toString() + " hours of usage left"); 
} 
+0

Ummm ... ce n'est pas un très bon exemple. L'argument passé dans 'prefs' est la préférence partagée qui a changé. Pas besoin de l'avoir à nouveau. Cela suppose également qu'il n'y a qu'une seule préférence partagée. Vous devez utiliser la clé pour identifier laquelle a changé s'il y en a plus d'une. – jsmith

Questions connexes