Android自定义日历对话框片段

时间:2015-10-13 00:56:40

标签: android android-fragments calendar alertdialog

所以我将一个需要日期设置的应用程序放在一起,由于我对Fragments缺乏了解,我在这个应用程序上只有一个非常可怕的时间。

我要做的是创建一个包含日历的自定义提醒对话框,然后我将设置监听器并将日期信息传递回我的输入活动。

我已经查看了对话的基本教程(here),并且我设法成功创建了基本警报,注册了点击次数,并将这些点击中的信息传递给了我的活动。

但是,当我尝试实现自定义视图时,正如网站所描述的那样,当我单击按钮以显示对话框时,我在Logcat中给出了以下消息,我的应用程序基本上冻结了。 / p>

  

I / AppCompatDelegate:活动的LayoutInflater已经安装了Factory,因此我们无法安装AppCompat&#39>

我看过并尝试过,但我不明白我应该如何解决这个问题。

这是我的Dialog代码......

import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.LayoutInflater;




public class TestDateDialog extends DialogFragment {
    TestDialogListener testListener;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();

        builder.setView(inflater.inflate(R.layout.input_calendar_dialog, null));
        builder.setMessage("This is a test dialog!!");

        //Set action buttons
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Log.d("Test", "Test OK Click!");
                testListener.onDialogPositiveClick(
                        "OK Button Clicked!");
            }
        });

        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                Log.d("Test", "Test Cancel Click!");
                testListener.onDialogNegativeClick(
                        "Cancel Button Clicked!!");
            }
        });

        return builder.create();
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        try {

            testListener = (TestDialogListener) activity;
        } catch (ClassCastException e) {

            throw new ClassCastException(activity.toString()
                                                 + " must implement TestDialogListener");
        }
    }

    public interface TestDialogListener {
        public void onDialogPositiveClick(String text);
        public void onDialogNegativeClick(String text);
    }
}

这是我日历的基本布局......

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id = "@+id/calendar_layout"
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation = "vertical" >

    <CalendarView
        android:id = "@+id/input_calendar"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:showWeekNumber = "false" />
</LinearLayout >

有没有办法实现我的目标?

1 个答案:

答案 0 :(得分:1)

您正在为某些类使用标准Android库,而为其他类使用支持库。值得注意的是,Activity和DialogFragment。您是否考虑过将这些转换为支持库?