如何在Android中的片段中的onClick侦听器中使对话框工作?

时间:2015-05-21 07:09:46

标签: java android dialog onclicklistener

我正在尝试构建一个Android应用程序并遇到一种情况,我希望用户通过单击上一个(月)和下一个(月)按钮在日期之间导航。但是我不希望用户在当月之后过一个月。我希望应用程序提示一个对话框,让用户知道他们无法选择当前的一个月后。下面是我的代码片段 - 我在两个部分上收到错误

01. if(formattedDate.before(currentMonth) || formattedDate.equals(currentMonth)){

在上面我收到错误说

The method before(Calendar) is undefined for the type String

02. new AlertDialog.Builder(HomeFragment.this)

并在上面我收到错误说

The constructor AlertDialog.Builder(HomeFragment) is undefined

以下是我点击监听器的完整代码

NextPicker.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

                if(formattedDate.before(currentMonth) || formattedDate.equals(currentMonth)){

                    c.add(Calendar.MONTH, 1);
                    formattedDate = df.format(c.getTime());
                    Log.v("NEXT DATE : ", formattedDate);
                    DatePicker.setText(formattedDate);
                }
                else{

                                new AlertDialog.Builder(HomeFragment.this)

                                .setTitle("Wrong Date Selection!")

                                .setMessage("The Month Selected must be before or equal to current month")

                                .setNeutralButton("Ok",

                                new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,

                                int which) {

                                }

                                }).show();
                            }


        }
    });

1 个答案:

答案 0 :(得分:1)

你的第一个问题是formattedDate是一个String。它必须是java.util.Date。

你的第二个问题来自于AlertDialog.Builder构造函数需要一个Context子类。 Fragment不是Context子类,但Activity是。尝试像

这样的东西
new AlertDialog.Builder(HomeFragment.this.getActivity());