Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά καλησπέρα.

Πάλι έχω ένα θέμα με τα sharedpreferences και δεν μπορώ να καταλάβω τον λόγο.
Όταν ξεκινάω το main  activity το βάζω να πάρει την ώρα εκείνη την στιγμή ονομάζοντας το lStartTime

MainActivity.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 την πράξη αλλά πάλι τα ίδια.

 

 

Κανονικά ο κώδικας έχει και άλλες μεταβλητές(δουλέυουν όλες κανονικά) αλλά επειδή είναι πολύ τσαπατσούλικος και δεν ξέρω αν θα βοηθούσε.
Αν πιστεύετε ότι θα βοηθήσει θα τον ανεβάσω.

Δημοσ.

πρέπει να περάσεις το 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");
}
Δημοσ.

Ειτε αυτο που σου ειπε ο ditsikts ή στο onCreate να διαβάζεις την preference. Πρωτα καλειται το oncreate και μετα το Onresume

Δημοσ.

 

πρέπει να περάσεις το 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

 Το έχω δοκιμάσει και αυτό αλλά τζίφος δεν έγινε κάτι.

Το παράτησα εντάξει δεν μπορώ να καταλάβω γιατί δεν δούλευε αλλά δεν είναι λογικό απλά :P

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...