我正在尝试制作一个仅在安装应用程序时出现的警告框;我需要用户在允许他们使用应用程序之前输入他们的电话号码。我的onCreate()方法中有一个警告对话框,但如果用户点击警告框之外,它就会消失。我已经尝试添加alert.setFinishOnTouchOutside(true)
,但是我收到错误(向'警报'添加强制转换)。如果用户点击窗外,我该怎么做才能阻止警报取消?感谢
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Please Enter Your Phone Number");
alert.setMessage("You must enter your phone number in order to use this application");
alert.setFinishOnTouchOutside(true);
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Editable value = input.getText();
// Do something with value!
}
});
alert.show();
答案 0 :(得分:2)
我正在尝试制作一个仅在安装应用程序时出现的警告框
这是不可能的。您无法在安装时获得控制权。
我需要用户在允许他们使用该应用之前输入他们的电话号码。
然后询问他们第一次运行您的应用时的价值,或者您的所需数据是否存在(例如,用户清除了应用的数据)。
我的onCreate()方法中有一个警告对话框,但如果用户点击警告框之外,它会消失。
如果他们按下BACK按钮,它也会消失。
我已经尝试添加alert.setFinishOnTouchOutside(true),但是我收到错误(向'警报'添加强制转换)
setFinishOnTouchOutside()
是Activity
上的一种方法。它不是AlertDialog.Builder
上的方法。
如果用户点击窗外,我该怎么做才能阻止取消警报?
在setCanceledOnTouchOutside()
建立的AlertDialog
上致电Builder
。这不适用于Builder
本身。
当然,如果您最初没有使用AlertDialog
会更好,因为您建议的用户体验是用户敌对的。
用户下载并安装您的应用程序,打开它,他们遇到的第一件事是他们可能不理解的对话框。而且,您的目标是他们无法在您的应用中获得实际解释的任何内容:
如果您在onResume()
中检测到您没有电话号码,则启动活动以允许他们提供号码,而不是对话框。利用屏幕解释一下您需要该号码的原因,并允许他们获得在线帮助以进一步解释问题。即使他们退出该活动,您原来的onResume()
也会再次开火,因此无法继续进行。一个更好的更好的用户体验将允许他们进入应用程序,但禁用需要使用电话号码的东西,就像你可以打开Microsoft Word而不被迫用枪支加载现有的Word doc
答案 1 :(得分:0)
您可以要求用户在用户第一次运行时输入手机,然后您可以将详细信息保存在共享首选项中,如果用户运行应用程序,您可以使用共享首选项值知道他们是否输入了他们的联系信息,如果他们这样做了,让他们完成这项活动并将其转发到下一个活动。
请一览link