-2

In meiner Aktivität habe ich einen Switch-Button. Ich wollte den Status der Switch-Schaltfläche beibehalten, wenn die App vom Hintergrund aus geschlossen wird.Speichern Switch Button-Status über gemeinsame Einstellungen, wenn App geschlossen ist

Der Status des Switches bleibt erhalten, wenn die App im Hintergrund angezeigt wird, kehrt jedoch in den Standardzustand (AUS) zurück, wenn die App aus dem Hintergrund entfernt wird.

Ich habe versucht, das Programm von here zu replizieren. Aber ich bin immer noch nicht in der Lage, den Zustand des Schalters zu erhalten.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_settings); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    switch1 = (Switch) findViewById(R.id.switch1); 

    SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyz", MODE_PRIVATE); 
    switch1.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true)); 


    switch1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (switch1.isChecked()) { 

       SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit(); 
       editor.putBoolean("NameOfThingToSave", true); 
       editor.apply(); 
       switch1.setChecked(true); 

       AlertDialog.Builder alertDialog = new AlertDialog.Builder(context); 
       // Setting Dialog Title 
       alertDialog.setTitle("Download all the Product's PDF."); 
       // Setting Icon to Dialog 
       alertDialog.setIcon(R.drawable.pdf_alert_dialog); 

       // Setting Positive "Yes" Button 
       alertDialog.setPositiveButton("CANCEL", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           switch1.setChecked(false); 
           SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit(); 
           editor.putBoolean("NameOfThingToSave", false); 
           editor.apply(); 

           dialog.dismiss(); 
          } 
         }); 
       // Setting Negative "NO" Button 
       alertDialog.setNegativeButton("DOWNLOAD ALL ", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 

           SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit(); 
           editor.putBoolean("NameOfThingToSave", true); 
           editor.apply(); 


           AlertDialog.Builder alertDialog1 = new AlertDialog.Builder(context); 
           // Setting Dialog Title 
           alertDialog1.setTitle("Free storage Available:" + megAvailable1 + " MB"); 
           alertDialog1.setMessage("File size to Download: POJO MB"); 
           // Setting Icon to Dialog 
           alertDialog1.setIcon(R.drawable.pdf_alert_dialog); 

           alertDialog1.setPositiveButton("CANCEL", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog1, int which) { 
               switch1.setChecked(false); 
               SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit(); 
               editor.putBoolean("NameOfThingToSave", false); 
               editor.apply(); 

               dialog1.dismiss(); 
              } 
             }); 
           // Setting Negative "NO" Button 
           alertDialog1.setNegativeButton("DOWNLOAD ", 
             new DialogInterface.OnClickListener() { 
              public void onClick(DialogInterface dialog1, int which) { 

               getFeedDownload(); 

               SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit(); 
               editor.putBoolean("NameOfThingToSave", true); 
               editor.apply(); 

              } 

             }); 
           alertDialog1.show(); 
          } 
         }); 

       // Showing Alert Message 
       alertDialog.show(); 
      } else { 
      } 
     } 
    }); 

Können Sie mir helfen, indem Sie mir sagen, wo ich falsch liege?

Antwort

0

Der Fehler, den ich gemacht habe, war, dass ich in meinem onResume den Schalter AUS hatte. Daher, jedes Mal, wenn ich die App neu starte, würde der Schalter unabhängig von der gemeinsamen Präferenz auf OFF gehen.

Ich habe eine Überprüfung hinzugefügt, um zu sehen, ob ich die PDF im Download-Ordner heruntergeladen hatte. Wenn ja, dann schalte ich den Schalter einfach auf ON und wenn nicht, dann OFF.

1

Vielleicht versuchen Sie editor.commit() anstelle von editor.apply(). Beziehen Sie sich auf diesen post für den Unterschied zwischen ihnen.

+0

Ich habe versucht, editor.commit() zu verwenden, aber immer noch wird der Zustand nicht gespeichert, wie für diese, wenn ich die App wieder öffnen, geht der Schalter zurück in den Standardzustand (OFF). –

+0

@Suhail Parvez hast du gesagt, bevor Tötung App Schalter ist im Off-Modus.Wenn du es wieder öffnest geht es auf onmode.am ich richtig – Vishwa

+0

@Vishwa Es ist das Gegenteil, ich halte es in den On-Modus und wenn ich die App aus der Hintergrund und komm wieder zurück. Es wird im Aus-Modus sein. –