2017-04-26 4 views
-2

Ich möchte eine Farbänderung, die mit einem Knopf gemacht wird, dauerhaft mit SharedPreferences machen. Hier ist mein Code:Schaltfläche Farbe mit SharedPreferencers Android ändern?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_gunawangsa); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setTitle("Gunawangsa Hotel"); 

    button1 = (Button) findViewById(R.id.gu_button); 

    sharedPreferences = getSharedPreferences("ButtonDisable", Context.MODE_PRIVATE); 

    final boolean isEnable = sharedPreferences.getBoolean("ButtonDisable", true); 
    button1.setEnabled(isEnable); 
    button1.setBackgroundColor(Color.RED); 
    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if (button1.isClickable()) { 
       Toast.makeText(getBaseContext(),"Claim", 
         Toast.LENGTH_SHORT).show(); 
       boolean isEnable = sharedPreferences.edit().putBoolean("ButtonDisable", false).commit(); 
       if (isEnable == false) { 
        Toast.makeText(getBaseContext(),"Claim", 
          Toast.LENGTH_SHORT).show(); 
       } else { 
        button1.setBackgroundColor(Color.RED); 
       } 
      } 


     } 


    }); 

} 
+0

Was willst du eigentlich? – FAT

+0

Ich möchte, wenn der Button angeklickt wird dann ändert sich der Button dauerhaft ?? –

+0

dauerhaft deaktivieren oder nur Farbe ändern? – FAT

Antwort

0

Try this:

import android.content.Context; 
import android.content.SharedPreferences; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 


public class GunawangsaActivity extends AppCompatActivity { 

    Button button1; 

    boolean isEnable; 

    SharedPreferences sharedPreferences; 
    SharedPreferences.Editor editor; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_gunawangsa); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Gunawangsa Hotel"); 

     button1 = (Button) findViewById(R.id.gu_button); 

     sharedPreferences = getSharedPreferences("ButtonDisable", Context.MODE_PRIVATE); 
     editor = sharedPreferences.edit(); 

     isEnable = sharedPreferences.getBoolean("ButtonDisable", true); 

     if (isEnable) { 
      button1.setEnabled(true); 
      button1.setBackgroundColor(Color.RED); 
     } else { 
      button1.setEnabled(false); 
      button1.setBackgroundColor(Color.GRAY); 
     } 

     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Toast.makeText(getBaseContext(),"Claim", Toast.LENGTH_SHORT).show(); 

       editor.putBoolean("ButtonDisable", false); 
       editor.commit(); 

       button1.setEnabled(false); 
       button1.setBackgroundColor(Color.GRAY); 
      } 
     }); 
    } 
} 

OUTPUT:

enter image description here

Hope this helfen ~

+0

danke dir so viel bro, seine Arbeit :) –

+0

Mein Vergnügen :) .. – FAT

1

ersetzen
boolean isEnable = sharedPreferences.edit().putBoolean("ButtonDisable", false).commit(); 

mit

boolean isEnable = sharedPreferences.getBoolean("ButtonDisable", false); 
sharedPreferences.edit().putBoolean("ButtonDisable",boolValue).apply(); 
+0

danke, aber wenn ich versuche, meine Anwendung zu schließen, meine Schaltfläche Farbe wieder erste Farbe. –

+0

unter dem booleschen Wert isEnable = sharedPreferences.getBoolean ("ButtonDisable", false); Zeile hinzufügen: sharedPreferences.edit(). putBoolean ("ButtonDisable", boolvalue) .apply(); –

0

Nun, Sie tun dies:

button1.setBackgroundColor(Color.RED); 

Egal, was der Wert des 'isEnable' ist.

Versuchen

button1.setBackgroundColor(isEnable ? Color.RED : Color.WHITE); 
Verwandte Themen