java - 允许用户在 Android 中每天点击一次菜单

标签 java android eclipse datetime actionbarsherlock

我正在创建一个在 actionbarsherlock 中有一个菜单项的程序。现在我希望用户每天单击该菜单一次,不再单击。我怎样才能做到这一点?这是我到目前为止所拥有的:

int hour = today.get(Calendar.HOUR_OF_DAY);

if (hour < 24) {

    try {
        if (gotGenders.contentEquals("Male")) {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                    Monitor.this);
            alertDialog.setTitle(gotNames);
            alertDialog.setMessage("You are currently burning "
                    + caloriesForMen() + " calories per hour");
            alertDialog.setPositiveButton("Save",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub

                        }
                    });

            alertDialog.setNegativeButton("Discard",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });

            alertDialog.setCancelable(false);
            showAlertDialog = alertDialog.create();
            showAlertDialog.show();
        }
        else if (gotGenders.contentEquals("Female")) {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                    Monitor.this);
            alertDialog.setTitle(gotNames);
            alertDialog.setMessage("You are currently burning "
                    + caloriesForWomen() + " calories per hour");
            alertDialog.setPositiveButton("Save",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub
                            // dialog.dismiss();
                        }
                    });

            alertDialog.setNegativeButton("Discard",
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog,
                                int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });

            alertDialog.setCancelable(false);
            showAlertDialog = alertDialog.create();
            showAlertDialog.show();

            count = 1;
        }
    } catch (Exception ex) {
        ex.printStackTrace();

        AlertDialog.Builder errorDialog = new AlertDialog.Builder(
                Monitor.this);
        errorDialog.setTitle("No User Selected!");
        // errorDialog.setMessage("You are currently burning " +
        // caloriesForWomen() + " per hour");
        errorDialog.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog,
                            int which) {
                        // TODO Auto-generated method stub
                        dialog.dismiss();
                    }
                });

        errorDialog.setCancelable(false);
        errorAlertDialog = errorDialog.create();
        errorAlertDialog.show();
    }
} else {
    count = 0;

    AlertDialog.Builder waitDialog = new AlertDialog.Builder(
            Monitor.this);
    waitDialog.setTitle("Wait after the day is over");
    waitDialog.setPositiveButton("OK",
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();
                }
            });

    waitDialog.setCancelable(false);
    waitAlertDialog = waitDialog.create();
    waitAlertDialog.show();
}

这允许我多次选择菜单,我如何限制它每天只能点击一次?感谢您提供任何帮助。

最佳答案

要实现这一点,您应该将上次访问日期存储在某处(数据库、共享首选项、文件中),然后:

long lastVistedDateTime = getLastVistedDateTime();
int lastDay = new Date(lastVistedDateTime).getDay();
int today = Calendar.get(Calendar.DATE);
if (today != lastDay){
    //an other day
    setLastVistedDateTime(Calendar.getInstance().getTimeInMillis());
}

要将日期与当前区域设置进行比较,请使用:

String lastDate = DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date(lastVistedDateTime));
String nowDate = DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date());
if (!nowDate.equals(lastDate)){
    //an other day
    setLastVistedDateTime(Calendar.getInstance().getTimeInMillis());
}

关于java - 允许用户在 Android 中每天点击一次菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089579/

相关文章:

Java -server 标志和编译

java - 如何更正 JAXB 生成器的 XSD?

java - 服务器套接字在第一次接收到数据后被阻塞

java - 为什么在 Spring 中,对于内容类型为 json-patch 的请求,日期转换不起作用?

android - 如何在其他 Activity 的 onResume 之后更新 ListView?

java - 以编程方式设置工作日

java - Android CPU : double, 整数我如何计算有关系吗?在特定情况下什么更快?

Wildfly 服务器上的 Java Spring 项目无法访问 RESTful 服务

Java windowBuilder - 如何显示 "File already exists"警告?

android - 我的 ADT 插件已更新,但 eclipse 无法识别它