2017-11-01 2 views
0

Ich mache Spinnrad für Preis, ich bin in der Lage, Klickereignis nach 3 Klicken zu deaktivieren, aber nicht aktivieren, klicken Sie an einem anderen Tag, ich möchte nur Benutzer klicken nur 3 Mal pro Tag und deaktivieren Click-Ereignis für diesen Tag und nur ermöglichen, am nächsten TagWie kann Click-Event nur 3-mal pro Tag eingeschränkt werden, und danach deaktivieren und aktivieren Sie nur am nächsten Tag klicken?

public class MainActivity extends AppCompatActivity implements SpinningWheelView.OnRotationListener<String> { 

private SpinningWheelView wheelView; 

private TextView rotate,spinCount,spinPoint; 
int COUNT=0; 
int points=0; 

private SharedPreferences mPrefs; 
private SharedPreferences.Editor editor; 
private String sharedPref="MY_PREF"; 

int count= 0; 

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

    mPrefs=getSharedPreferences(sharedPref,Context.MODE_PRIVATE); 
    mPrefs.getInt("count",0); 
    editor=mPrefs.edit(); 


    wheelView = (SpinningWheelView) findViewById(R.id.wheel); 

    rotate = (TextView) findViewById(R.id.rotate); 
    spinCount=(TextView)findViewById(R.id.spin_count); 
    spinPoint=(TextView)findViewById(R.id.spin_point); 


    wheelView.setItems(R.array.dummy); 
    wheelView.setOnRotationListener(this); 

    rotate.setOnClickListener(new View.OnClickListener() { 
     @RequiresApi(api = Build.VERSION_CODES.KITKAT) 
     @Override 
     public void onClick(View v) { 
      int i = mPrefs.getInt("count",0); 

      if (i<3){ 
       count++; 
       editor.putInt("count",count); 
       editor.apply(); 
       wheelView.rotate(80, 3000, 50); 
      }else { 
       rotate.setEnabled(false); 

       //how can it be enabled on another day 
      } 


     } 
    }); 
} 

ich es mit Geteilt Einstellungen erreichen kann, aber Gemeinsame Einstellungen von Daten und Löschen des Cache gelöscht werden können, die für meine Anwendung nicht gut ist, wie ich ihre Punkte auf der Wolke gespeichert werden soll.

+0

Sie müssen wahrscheinlich einen Backend-Server bereitstellen, um die Daten jedes Benutzers zu speichern ... –

Antwort

0

einfachste Lösung
isTodayClickable = true/false

OnCreate() den Zeitstempel erhalten und stellen Sie die clicable true/geklickt und Datum geklickt Sowohl in gemeinsamen pref speichern nach 3 Klick es ermöglichen falsch es in pref Schreiblogik speichern, wenn es pref für Datum chek, wenn das Datum mehr als ein Tag ist dann legen sie es auf wahr und es in pref

0
geteilt speichern

aber nicht in der Lage, klicken Sie in einem anderen Tag können

Sie speichern das Datum/Uhrzeit des ersten Klick zu aktivieren und nach 24 Stunden zurückzusetzen, oder um Mitternacht zurückgesetzt. Dies wird nicht empfohlen wie Sie wissen, weil Kunden diese Art von Einschränkungen leicht umgehen können.

zurück auf die Hauptfrage

Wie Click-Ereignis nur 3 Mal pro Tag begrenzen

1. eine UUID für diesen Client-Installation machen: The Description in google's docs ist weit über gut.

2. Fügen Sie ein Feld in die Datenbank/Tabelle Ihres Servers für die Klicks dieser UUID ein. Die UUID ist Ihr Primärschlüssel. Erhöhen Sie das Klickfeld nach jedem Klick. Um eine Anfrage so einfach an Ihren Server zu senden, brauchen Sie keine Bibliothek, aber AsyncHttpClient macht es einfach.

Wenn das Internet nicht verfügbar ist, informieren Sie Ihre Benutzer darüber. Gehe nicht offline weiter, da sie leicht betrügen können.

3. speichern Sie das Datum/die Uhrzeit des ersten Klicks in Ihrem Server.

4. Erstellen Sie eine einfache gespeicherte Prozedur in Ihrer SQL-Datenbank, die die Daten um 00:00 zurücksetzt.

1

Erstellen Sie einen Datumsobjektspeicher in den gemeinsamen Voreinstellungen mit der Anzahl der Schaltflächen. am nächsten Tag erstellen Sie ein neues Datum und Karte mit freigegebenen Einstellungen gespeicherten Datum. Wenn übereinstimmen, dann deaktivieren Sie die Schaltfläche else enable. Hier ist das Beispiel unten.

button = (Button)findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 

    int clicks = 0; 
    clicks++; 

    if (clicks >3){ 
     button.setEnabled(false); 
    } 

    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", this.MODE_PRIVATE); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putInt("clicks", clicks); 
    editor.putString("date",date.toString()); 
    editor.apply(); 
} 
}); 

Glückliche Kodierung !!

+0

Danke, aber ich muss Service coz gemeinsame Präferenz kann durch Clearing-Cache löschen, so kann Benutzer leicht betrügen .. –

Verwandte Themen