所以我将一个需要日期设置的应用程序放在一起,由于我对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 >
有没有办法实现我的目标?
答案 0 :(得分:1)
您正在为某些类使用标准Android库,而为其他类使用支持库。值得注意的是,Activity和DialogFragment。您是否考虑过将这些转换为支持库?