gpt4 book ai didi

java - 每次运行都会显示 alertDialog 免责声明

转载 作者:行者123 更新时间:2023-11-29 07:06:50 24 4
gpt4 key购买 nike

我想在我的应用程序中添加一个免责声明,它会在应用程序首次启动时弹出。如果用户拒绝,应用程序将关闭。如果用户再次打开应用程序,免责声明应再次弹出,直到用户接受为止。一旦接受,它应该隐藏并且不再弹出。

我的问题:如果我接受免责声明,它会关闭并且一切正常。但是当我启动该应用程序时,它会再次弹出。

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


final SharedPreferences pref = getSharedPreferences("Preferences", MODE_PRIVATE);

String lver = pref.getString("Version", "");
String ver = this.getString(R.string.version);
if(ver != lver)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Disclaimer")
.setMessage(this.getString(R.string.disclaimer))
.setCancelable(false)
.setIcon(R.drawable.caution)
.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
SharedPreferences.Editor edit = pref.edit();
public void onClick (DialogInterface dialog, int id) {

boolean accepted = true;
dialog.cancel();
if(accepted == true)
{
edit.putString("Version", this.getString(R.string.version));
edit.commit();}
}
private String getString(int version) {
// I had to create this method, cause i got an error the line above this.getstring(R.string.version)
return null;
}
})
.setNegativeButton("Decline", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
}
});
AlertDialog disc = builder.create();
disc.show();
} }

我找到了一个 quite similar question ,但我无法用它解决我的问题。

我会很高兴得到一个答案,如果可能的话,在代码中有一个很好的解释。因为我想了解更多/为什么它解决了我的问题,不想复制和插入代码并对它的工作感到高兴。

最佳答案

您的问题是 if 条件 ver != lver,因为您应该使用 equals 检查字符串是否相等。

if(ver.equals(lver))

因为这个问题已经被讨论过很多次这里是link这应该很好解释。

进一步更改这部分(我在代码中注释)

    // this doesn't belong here. get it in onClick of the positive Button
final SharedPreferences pref = getSharedPreferences("Preferences", MODE_PRIVATE);
builder.setTitle("Disclaimer")
.setMessage(this.getString(R.string.disclaimer))
.setCancelable(false)
.setIcon(R.drawable.caution)
.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
SharedPreferences.Editor edit = pref.edit(); // the same as with the pef object
public void onClick (DialogInterface dialog, int id) {

boolean accepted = true; // no need for this because the if clause will always be true
dialog.cancel(); // cancel the dialog IF the job here is done
if(accepted == true)
{
edit.putString("Version", this.getString(R.string.version)); // delete the this pointer
edit.commit();}
}
// no need for this method
private String getString(int version) {
// I had to create this method, cause i got an error the line above this.getstring(R.string.version)
return null;
}
});
.setNegativeButton("Decline", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
}
});

为此

    builder.setTitle("Disclaimer")
.setMessage(this.getString(R.string.disclaimer))
.setCancelable(false)
.setIcon(R.drawable.caution)
.setPositiveButton("Accept", new DialogInterface.OnClickListener() {

public void onClick (DialogInterface dialog, int id) {
SharedPreferences pref = getSharedPreferences("Preferences", MODE_PRIVATE);
SharedPreferences.Editor edit = pref.edit();
edit.putString("Version", getString(R.string.version));
edit.commit();
dialog.cancel();
}

});
.setNegativeButton("Decline", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
}
});

现在应该可以了

关于java - 每次运行都会显示 alertDialog 免责声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18747613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com