猿问

Android 应用中的 EULA 对话框

我想创建一个仅在第一次打开应用程序时显示 EULA 对话框的 Android 应用程序。在这种情况下,如果用户点击接受,应用程序应该继续正常运行,或者如果用户点击拒绝,应用程序应该关闭。如果用户曾拒绝过一次,则每次他/她打开应用程序时都会提示他/她接受 EULA,直到他/她接受 EULA。

问题是,Android studio 被标记if(!agreed)为 Unexpected token。我应该怎么做才能解决它?

另外,这种方法是否正确实现我在开始时解释的内容?


不负相思意
浏览 321回答 3
3回答

守着星空守着你

您的问题是由错误的 Java 语法引起的。你不能直接嵌套在类体中编写可执行代码,它不会编译!为了使其工作,您可以将代码 ( if(!agreed) {...})括在大括号中,{if(!agreed){...}}这将使其成为初始化程序。此代码将正确编译,但在您的情况下,您仍然可能遇到问题..由于您在 Android 上,运行初始化代码的标准方法是在内部onCreate()回调方法中编写,这Activity是创建新方法时运行的第一个方法。

天涯尽头无女友

你不能在那里添加你的代码,这是非法的(至少,没有声明它的范围)。@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    this.setContentView(R.layout.activity_main);    final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);    if(! sharedPreferences.getBoolean("agreed", false)) {        new AlertDialog.Builder(this, R.style.AlertDialog)                .setIcon(R.drawable.ic_error_black_24dp)                .setTitle(R.string.eula_title)                .setMessage(R.string.eula)                .setPositiveButton(R.string.accept, new DialogInterface.OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        SharedPreferences.Editor editor = sharedPreferences.edit();                        editor.putBoolean("agreed", true);                        editor.apply();                        dialog.dismiss();                    }                })                .setNegativeButton(R.string.decline, new DialogInterface.OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        finish();                    }                })                .show();    }...}
随时随地看视频慕课网APP

相关分类

Java
我要回答