2017-05-12 5 views
0

Ich habe Aktivitäten in meiner App tabelliert. In jedem Tab habe ich einen (Schalter-) Knopf, der durch Anklicken ein- und ausschaltet. Als ich zu einem anderen Tab gehe und zum selben zurück komme, geht es ab. Ich möchte seinen Wert so beibehalten, dass er sich beim Wechsel zu anderen Aktivitäten nicht ändert.Variabler Wert in verschiedenen Aktivitäten Android Studio

Layout (XML) Code der Taste:

<Button 
    android:id="@+id/b_btnlight" 
    android:layout_width="65dp" 
    android:layout_height="30dp" 
    android:text="ON" 
    android:background="@color/red" 
    android:textColor="@color/black" 
    android:layout_marginLeft="220dp" 
    android:layout_marginTop="500dp"/> 

Die zugehörige Registerkarte Aktivität:

bbtnlight = (Button) rootView.findViewById(R.id.b_btnlight); 

bbtnlight.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if(bbtnlight.getText()=="ON") 
       {bbtnlight.setText("OFF"); 
        bbtnlight.setBackgroundColor(getResources().getColor(R.color.green));} 
       else 
       {bbtnlight.setText("ON"); 
        bbtnlight.setBackgroundColor(getResources().getColor(R.color.red));} 
      } 
     }); 

Wenn die Taste ausgeschaltet ist, seine Farbe ist rot und der Text gleich ON und umgekehrt . Für die anderen Tab-Aktivitäten habe ich das gleiche. Ich schätze es, wenn Sie mir in diesem Fall helfen könnten. Vielen Dank.

Antwort

1

Eine Option ist eine Klasse mit statischen Variablen zu machen, den Wert während der Anwendungen Lebensdauer

public class GlobalVars { 
    public static boolean isLightOn; 
} 

Auf diese Weise erhalten Sie und GlobalVars.isLightOn von überall in der Anwendung einstellen zu halten. Setzen Sie es auf wahr, wenn Sie den Schalter verwenden, und wenn Sie zurückkommen, überprüfen Sie diese Variable, ob sie wahr oder falsch ist. Wenn Sie Ihre Anwendung die Variable schließen wird auf false

Eine weitere Option zurückgesetzt werden soll SharedPreferences verwenden, um Ihre Daten zu speichern, auf diese Weise, wenn Sie Ihre Anwendung zu schließen, werden die Daten dort sein, wenn Sie es wieder öffnen

+0

Dank, ich brauchte diesen GlobalVars tatsächlich. Es hat für mich funktioniert. – srt

2

In Android können Sie nie sicher sein, wann Ihre Aktivitäten nicht mehr verfügbar sind, wenn sie nicht auf dem Bildschirm angezeigt werden. Wenn Sie möchten, dass Ihre App sich Werte merkt, müssen Sie einen Ort finden, an dem sie permanent oder semipermanent gespeichert werden können, selbst wenn der Benutzer zu einer anderen Aktivität, einer anderen App wechselt, den Bildschirm ausschaltet oder das Gerät sogar ausschaltet. Sie können nicht davon ausgehen, dass der Benutzer damit fertig ist, nur weil die Aktivität nicht mehr auf dem Bildschirm ist. Wenn der Nutzer beispielsweise einen Anruf erhält, während er Ihre App verwendet, möchten Sie wahrscheinlich dorthin zurückkehren, wo er aufgehört hat.

Es gibt einige Orte, wo Sie persistente Daten in Android speichern können. Hier sind die Besten 2:

  1. Gemeinsam genutzte Einstellungen - https://developer.android.com/reference/android/content/SharedPreferences.html
  2. SqlLite - https://developer.android.com/training/basics/data-storage/databases.html
1

Verwendung SharedPreference

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode 
Editor editor = pref.edit(); 

Speichern von Daten

editor.putBoolean("key_name", true); // Storing boolean - true/false 
editor.putString("key_name", "string value"); // Storing string 
editor.putInt("key_name", "int value"); // Storing integer 
editor.putFloat("key_name", "float value"); // Storing float 
editor.putLong("key_name", "long value"); // Storing long 

editor.commit(); // commit changes 

Abrufen von Daten

pref.getString("key_name", null); // getting String 
pref.getInt("key_name", null); // getting Integer 
pref.getFloat("key_name", null); // getting Float 
pref.getLong("key_name", null); // getting Long 
pref.getBoolean("key_name", null); // getting boolean 
1

Sie legen es einfach in SharedPreferences

SharedPreferences pref = getSharedPreferences(MODE_PRIVATE); 
Editor editor = pref.edit(); 

onCreate(){ 
    checkButton(); 
    bbtnlight.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       checkButton(); 
      } 
     }); 
} 

private void checkButton() { 
    if (pref.getBoolean("is_button_checked", false)) { 
     bbtnlight.setText("ON"); 
     bbtnlight.setBackgroundColor(getResources().getColor(R.color.red)); 
     editor.putBoolean("is_button_checked", true); 
    } else { 
     bbtnlight.setText("OFF"); 
     bbtnlight.setBackgroundColor(getResources().getColor(R.color.green)); 
     editor.putBoolean("is_button_checked", false); 
    } 
} 
Verwandte Themen