Java 如何修改AlertDialog(Android)?
我是Java和Android Studio的初学者,所以我的问题是:我为一个活动创建了一个警报对话框窗口,正面按钮是“OK”,负面按钮是“No Thank”。如下面的代码所示Java 如何修改AlertDialog(Android)?,java,android,Java,Android,我是Java和Android Studio的初学者,所以我的问题是:我为一个活动创建了一个警报对话框窗口,正面按钮是“OK”,负面按钮是“No Thank”。如下面的代码所示 if(Times==0) { AlertDialog.Builder builder1 = new AlertDialog.Builder(this); builder1.setIcon(android.R.drawable.ic_dialog_alert); builder
if(Times==0) {
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setIcon(android.R.drawable.ic_dialog_alert);
builder1.setTitle("Warning");
builder1.setMessage("Rooting of a phone may void your Warranty in most of the cases,so it is adviced to proceed at your own risk");
builder1.setCancelable(true);
builder1.setPositiveButton(
"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Times += 1;
dialog.cancel();
}
});
builder1.setNegativeButton(
"No Thanks",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
}
这一切都很顺利,但现在的问题是,如果用户单击“确定”按钮,我希望它只显示一次,如果用户单击“确定”,我不希望再次显示它。我在我的类中创建了一个变量times
,并将其初始化为零,如下所示
public class rootingRooting extends AppCompatActivity {
int Times=0;
并将完整的AlertDialog
放入if循环中,并在用户单击“确定”时增加其值,以便在用户单击“确定”时循环只能执行一次,但每当我打开活动时,警报框都会显示,只需单击“确定”。所以,现在我想做的事情是:
谢谢。您需要使用
SharedReferences
来持久保存数据,局部变量没有帮助。
大概是这样的:
编辑根据您的要求,我添加了一个示例活动类来显示整个过程。有关更多信息,请参见中间的注释
编辑2查看//第二次编辑注释后的代码
您需要使用
SharedReferences
来持久保存数据,局部变量没有帮助。
大概是这样的:
编辑根据您的要求,我添加了一个示例活动类来显示整个过程。有关更多信息,请参见中间的注释
编辑2查看//第二次编辑注释后的代码
谢谢你,威尔逊博士,但作为java和android的新手,我不知道在哪里我必须使用我希望你更具体一点的东西,坦率地说,这是我第一次听到SharedReference,我尝试在类声明之后放置第一个块,并导入了所需的文件,但仍然显示为“无法解析符号putin”或“无法解析符号apply”,谢谢..不要在活动声明之后放置第一个块,把它放在AlertDialog“OK”按钮的一次点击中。当你调用AlertDialogThank you drWilson时,把另外两个块放在if(times==0)的位置上。谢谢你,威尔逊博士。我想出来了,现在它可以像我想的那样工作了。还有一件事是我现在问的第二个问题,我如何在“不,谢谢”中使用意图按钮,如果用户点击将直接带他们回家或其他活动。请您回答这个问题,也很高兴它有帮助,(我已经更新了答案)。关于第二个问题,请参见我的第二次编辑。请参见
对话框。SetNegativeButton
方法。在MyActivity
中写下当前活动的名称,在HomeActivity
中写下要打开的活动的名称。如果您只想关闭当前活动,请调用finish()
,而不是使用intent。谢谢wilson博士,但作为java和android的新手,我不知道在哪里必须使用我希望您更具体一点的内容,坦率地说,这是我第一次听到SharedReference,我尝试在类声明之后放置第一个块,并导入了所需的文件,但仍然显示为“无法解析符号putin”或“无法解析符号apply”,谢谢..不要在活动声明之后放置第一个块,把它放在AlertDialog“OK”按钮的一次点击中。当你调用AlertDialogThank you drWilson时,把另外两个块放在if(times==0)的位置上。谢谢你,威尔逊博士。我想出来了,现在它可以像我想的那样工作了。还有一件事是我现在问的第二个问题,我如何在“不,谢谢”中使用意图按钮,如果用户点击将直接带他们回家或其他活动。请您回答这个问题,也很高兴它有帮助,(我已经更新了答案)。关于第二个问题,请参见我的第二次编辑。请参见对话框。SetNegativeButton
方法。在MyActivity
中写下当前活动的名称,在HomeActivity
中写下要打开的活动的名称。如果只想关闭当前活动,请调用finish()
,而不是使用intent。
public class MainActivity extends AppCompatActivity {
SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//When the activity starts, we look into the shared prefs and get an int of name "ok_clicked" from it.
//0 will be the default value of the int if there is no int stored in sharedPreferences.
prefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
int times = prefs.getInt("ok_clicked", 0);
//if the times value is 0, we will open the dialog, otherwise nothing happens
if (times==0){
openDialog();
}
}
//Read This comment First: We will create a Method, which create an alert Dialog.
private void openDialog(){
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Test").setMessage("Lorem ipsum dolor");
dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//When OK button is clicked, an int with value of 1 will be saved in sharedPreferences.
prefs = getSharedPreferences("myPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("ok_clicked", 1);
editor.apply();
}
});
dialog.setNegativeButton("No Thanks", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Second Edit: To open another acitivty on No Thanks Button
Intent intent = new Intent(MyActivity.this, HomeActivity.class);
startActivity(intent);
}
});
dialog.show();
}
}