2016-08-06 40 views
0

Okay, ich habe dieses Popup-Fenster, das den Benutzer bittet, die App zu bewerten. Sie können Ja oder Nein wählen. Wenn Ja gedrückt wird, wird die App im App Store geöffnet. Wenn nein gedrückt wird, schließt das Dialogfeld (vorerst). Ich möchte, dass, wenn Ja gedrückt wird, das Dialogfeld nicht mehr angezeigt wird (auch wenn der Benutzer nur Ja drückt, aber die App nicht wirklich bewertet ..), auch nachdem sie die App geschlossen und wieder geöffnet haben. Der Zweck davon ist, dass der Benutzer nicht aufgefordert wird, die App zu bewerten, auch wenn sie dies bereits getan haben.Android Studio: benutzerdefinierter Dialog tritt nur wieder auf, wenn no gedrückt wird

Dialog Klasse:

public class CustomDialogClass extends Dialog implements 
    android.view.View.OnClickListener { 

public Activity c; 
public Dialog d; 
public Button yes, no; 

public CustomDialogClass(Activity a) { 
    super(a); 
    // TODO Auto-generated constructor stub 
    this.c = a; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.custom_dialog); 
    yes = (Button) findViewById(R.id.btn_yes); 
    no = (Button) findViewById(R.id.btn_no); 
    yes.setOnClickListener(this); 
    no.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 
     case R.id.btn_yes: 

      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse("market://details?id=com.nianticlabs.pokemongo&hl=en")); 
      getContext().startActivity(intent); 

      dismiss(); 
      break; 
     case R.id.btn_no: 
      dismiss(); 
      break; 
     default: 
      break; 
    } 
    dismiss(); 
    } 
} 

(. Ich weiß, dass der Link für pokemon gehen lol es ist nur für Testzwecke) wird jede Hilfe sehr :)

________edit_______ Code erkannt werden, wo ich zeigen der Dialog (tritt auf, wenn der Benutzer eine bestimmte Klasse betritt):

+0

können Sie nach dem Code, wo Sie Ihren Dialog zeigen. –

+0

Ich habe das hinzugefügt. Es wird immer angezeigt, wenn sich der Benutzer in dieser bestimmten Klasse befindet. – user6671584

+0

Der zweite Code, den ich hinzugefügt habe, war falsch .. Es war für etwas anderes, sorry. Ich habe es entfernt – user6671584

Antwort

0

Möglicherweise müssen Sie einen Status darüber speichern, ob die u ser gedrückt YES Taste. Und bevor Sie Ihren Dialog anzeigen möchten, überprüfen Sie den Status.

Da Sie nur einen booleschen Wert benötigen, wird SharedPreferences empfohlen.

+0

Danke, aber ich bin irgendwie ein Noob, also bin ich mir nicht so sicher, wie ich das angehen soll. Ich habe verschiedene Dinge ausprobiert, aber nicht funktioniert – user6671584

0

Es wäre hilfreich, wenn ich sehen könnte, wo Sie das eigentliche Dialogfeld anzeigen, der Code, den Sie dafür bereitstellen, geht nur noch zur Marktseite ... aber wir können trotzdem damit arbeiten.

Wenn Sie diese Box dem Benutzer nie wieder anzeigen möchten, empfehle ich die Verwendung von SharedPreferences. Dies ermöglicht uns, (im Wesentlichen) permanente Variablen zu speichern.

Beispiel:

SharedPreferences settings = getContext().getSharedPreferences("your-app", 0); 
if(settings.getBoolean("btn_pressed", false)){ 
//show dialog 
} 

Dies wird der Dialog stellen Sie sicher, nicht öffnen, wenn wir die Gemeinsame Einstellungen boolean haben „btn_pressed“ auf true gesetzt.

diese boolean einstellen, nachdem die ja Taste gedrückt wird:

@Override 
public void onClick(View v) { 

    switch (v.getId()) { 
     case R.id.btn_yes: 
      SharedPreferences.Editor edit = c.getSharedPreferences("your-app", 0).edit(); 
      edit.putBoolean("btn_pressed", true); 
      edit.apply(); 

      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse("market://details?id=com.nianticlabs.pokemongo&hl=en")); 
      getContext().startActivity(intent); 

      dismiss(); 
      break; 
     case R.id.btn_no: 
      dismiss(); 
      break; 
     default: 
      break; 
    } 
    dismiss(); 
} 

Gemeinsam genutzte Einstellungen ist eine einfache Möglichkeit für Ihre App permanent Benutzereinstellungen oder Dinge dieser Art zu erinnern. Hoffe das hilft!

EDIT: bitte Syntax Korrektur beachten Sie, hat der Editor eine Hauptstadt (SharedPreferences.editor wird SharedPreferences.Editor)

+0

Danke, aber ich bekomme die Fehler: Editor, puttoolean nicht lösen und anwenden. – user6671584

+0

gleich mit getBoolean – user6671584