marduc812 Δημοσ. 9 Μαΐου 2014 Δημοσ. 9 Μαΐου 2014 Παιδιά καλησπέρα.Πάλι έχω ένα θέμα με τα sharedpreferences και δεν μπορώ να καταλάβω τον λόγο.Όταν ξεκινάω το main activity το βάζω να πάρει την ώρα εκείνη την στιγμή ονομάζοντας το lStartTimeMainActivity.java public class MainActivity extends Activity { long lStartTime; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView)findViewById(R.id.textView); lStartTime = new Date().getTime(); tv.setText(lStartTime+""); ImageButton play = (ImageButton) findViewById(R.id.imageButton1); ImageButton infos = (ImageButton) findViewById(R.id.imageButton2); play.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub startActivity(new Intent(MainActivity.this,Map.class)); } }); infos.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub startActivity(new Intent(MainActivity.this,Finish.class)); } }); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); SharedPreferences settings = getSharedPreferences("MYPREFS", 0); SharedPreferences.Editor editor = settings.edit(); editor.clear(); editor.putLong("starttime",lStartTime); editor.commit(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); SharedPreferences settings = getSharedPreferences("MYPREFS", 0); lStartTime = settings.getLong("starttime",0); } } και αυτό το είναι το finish.java public class Finish extends Activity { long lStartTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.finish); long lEndTime = new Date().getTime(); long difference; difference = lEndTime - lStartTime; } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); SharedPreferences settings = getSharedPreferences("MYPREFS", 0); SharedPreferences.Editor editor = settings.edit(); editor.clear(); editor.putLong("starttime",lStartTime); editor.commit(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); SharedPreferences settings = getSharedPreferences("MYPREFS", 0); lStartTime = settings.getLong("starttime",0); } } Στο main activity μου δείχνει όταν ξεκινάω κανονικά τον χρόνο τον long.Όταν περνάω στο Finish όμως το start time είναι 0 σαν να μην έχει αλλάξει δηλαδή παίρνει το προεπιλεγμένο.Έχω κάνει κάτι λάθος;Δοκίμασα να κάνω και στο onresume την πράξη αλλά πάλι τα ίδια. Κανονικά ο κώδικας έχει και άλλες μεταβλητές(δουλέυουν όλες κανονικά) αλλά επειδή είναι πολύ τσαπατσούλικος και δεν ξέρω αν θα βοηθούσε.Αν πιστεύετε ότι θα βοηθήσει θα τον ανεβάσω.
ditsikts Δημοσ. 12 Μαΐου 2014 Δημοσ. 12 Μαΐου 2014 πρέπει να περάσεις το value της lstarttime από το παλιό activity στο καινουργιο. Intent i = new Intent(getApplicationContext(), NewActivity.class); i.putExtra("new_variable_name","value"); startActivity(i); Then in the new Activity, retrieve those values: //στο νέο activity Bundle extras = getIntent().getExtras(); if (extras != null) { String value = extras.getString("new_variable_name"); }
ParhsG Δημοσ. 13 Μαΐου 2014 Δημοσ. 13 Μαΐου 2014 Ειτε αυτο που σου ειπε ο ditsikts ή στο onCreate να διαβάζεις την preference. Πρωτα καλειται το oncreate και μετα το Onresume
marduc812 Δημοσ. 14 Μαΐου 2014 Μέλος Δημοσ. 14 Μαΐου 2014 πρέπει να περάσεις το value της lstarttime από το παλιό activity στο καινουργιο. Intent i = new Intent(getApplicationContext(), NewActivity.class); i.putExtra("new_variable_name","value"); startActivity(i); Then in the new Activity, retrieve those values: //στο νέο activity Bundle extras = getIntent().getExtras(); if (extras != null) { String value = extras.getString("new_variable_name"); } To πρόβλημα με το bundle είναι ότι έιναι πολλά τα activities πάνω από 15 και εκεί είναι το θέμα. Ειτε αυτο που σου ειπε ο ditsikts ή στο onCreate να διαβάζεις την preference. Πρωτα καλειται το oncreate και μετα το Onresume Το έχω δοκιμάσει και αυτό αλλά τζίφος δεν έγινε κάτι. Το παράτησα εντάξει δεν μπορώ να καταλάβω γιατί δεν δούλευε αλλά δεν είναι λογικό απλά
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα