java 日期选择器Android Studio崩溃膨胀类android.widget时出错,

n3schb8v  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(98)

我知道类似的问题已经问过,但他们似乎没有解决这个特殊的情况。
这是我的xml(非常简单,只有一个文本和一个提示文本,单击以选择日期):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    tools:context=".moreUserInfo">

    <TextView
        android:id="@+id/textView10"
        android:layout_width="match_parent"
        android:layout_height="97dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginEnd="0dp"
        android:gravity="center"
        android:text="Enter your birthday"
        android:textColor="#ffffff"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/tvDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="3dp"
        android:layout_marginTop="91dp"
        android:layout_marginEnd="-3dp"
        android:gravity="center"
        android:hint="Select Date"
        android:textColor="#ffffff"
        android:textColorHint="#CEA6FFCC"
        android:textSize="20sp" />

</RelativeLayout>

这是我的.java类:

import androidx.appcompat.app.AppCompatActivity;

import android.app.DatePickerDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;

import java.util.Calendar;

import static android.R.style.Widget_Holo_ActionBar_Solid;

public class moreUserInfo extends AppCompatActivity {

    private static final String TAG = "moreUserInfo";

    private TextView mDisplayDate;
    private DatePickerDialog.OnDateSetListener mDateSetListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_more_user_info);
        mDisplayDate = (TextView) findViewById(R.id.tvDate);
        mDisplayDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Calendar cal = Calendar.getInstance();
                int year = cal.get(Calendar.YEAR);
                int month = cal.get(Calendar.MONTH);
                int day = cal.get(Calendar.DAY_OF_MONTH);

                DatePickerDialog dialog = new DatePickerDialog(moreUserInfo.this, Widget_Holo_ActionBar_Solid, mDateSetListener, year,month,day);
                dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //make transparent background.
                dialog.show();
            }
        });
        mDateSetListener = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                Log.d(TAG, "onDateSet: date: "+ i + "/" +i1 + "/" +i2);
            }
        };
    }
}

一切似乎都很好,但当我运行它,应用程序崩溃后,我点击“选择日期”textView与以下(巨大的)错误消息:

E/AnimationUtils: RuntimeException for unknown animation name, resouce ID #0x10a0026
E/AnimationUtils: loadAnimation: getConfiguration = {0 1.3 themeSeq = 0 showBtnBg = 0 214mcc7mnc [en_GB,es_ES] ldltr sw360dp w360dp h616dp 480dpi nrml long port finger -keyb/v/h -nav/h appBounds=Rect(0, 0 - 1080, 1920) s.70 mkbd/h}
    loadAnimation: getDisplayMetrics = DisplayMetrics{density=3.0, width=1080, height=1920, scaledDensity=3.8999999, xdpi=435.42825, ydpi=431.57477}
    loadAnimation: resourceName = android:anim/date_picker_fade_in_material
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.filmmate, PID: 9738
    android.view.InflateException: Binary XML file line #18: Binary XML file line #18: Error inflating class android.widget.DatePicker
    Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class android.widget.DatePicker
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at android.app.DatePickerDialog.<init>(DatePickerDialog.java:119)
        at android.app.DatePickerDialog.<init>(DatePickerDialog.java:109)
        at com.example.filmmate.moreUserInfo$1.onClick(moreUserInfo.java:40)
        at android.view.View.performClick(View.java:6897)
        at android.widget.TextView.performClick(TextView.java:12727)
        at android.view.View$PerformClick.run(View.java:26101)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: android.view.InflateException: Binary XML file line #33: Binary XML file line #18: Error inflating class com.android.internal.widget.DialogViewAnimator
     Caused by: android.view.InflateException: Binary XML file line #18: Error inflating class com.android.internal.widget.DialogViewAnimator
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
        at android.view.LayoutInflater.parseInclude(LayoutInflater.java:965)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:859)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.widget.DatePickerCalendarDelegate.<init>(DatePickerCalendarDelegate.java:114)
        at android.widget.DatePicker.createCalendarUIDelegate(DatePicker.java:200)
        at android.widget.DatePicker.<init>(DatePicker.java:173)
        at android.widget.DatePicker.<init>(DatePicker.java:145)
        at android.widget.DatePicker.<init>(DatePicker.java:141)
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
        at android.view.LayoutInflater.createView(LayoutInflater.java:647)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
E/AndroidRuntime:     at android.app.DatePickerDialog.<init>(DatePickerDialog.java:119)
        at android.app.DatePickerDialog.<init>(DatePickerDialog.java:109)
        at com.example.filmmate.moreUserInfo$1.onClick(moreUserInfo.java:40)
        at android.view.View.performClick(View.java:6897)
        at android.widget.TextView.performClick(TextView.java:12727)
        at android.view.View$PerformClick.run(View.java:26101)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.NumberFormatException: For input string: "res/drawable-xxhdpi-v4/ab_solid_dark_holo.9.png"
        at java.lang.Integer.parseInt(Integer.java:608)
        at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:133)
        at android.content.res.TypedArray.getInt(TypedArray.java:375)
        at android.view.animation.Animation.<init>(Animation.java:254)
        at android.view.animation.AlphaAnimation.<init>(AlphaAnimation.java:40)
        at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:170)
        at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:145)
        at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:110)
        at android.widget.ViewAnimator.setInAnimation(ViewAnimator.java:314)
        at android.widget.ViewAnimator.<init>(ViewAnimator.java:58)
        at com.android.internal.widget.DialogViewAnimator.<init>(DialogViewAnimator.java:38)
            ... 39 more

我知道这是一个奇怪的问题,也许是一个愚蠢的问题,但帮助是真的很感激,谢谢。

bf1o4zei

bf1o4zei1#

问题是设置Widget_Holo_ActionBar_Solid。如果你删除它,你不会得到错误。尝试以这种方式创建自己的风格:
styles.xml:

<style name="DatePickerDialogStyle" parent="ThemeOverlay.AppCompat.Dialog">
    <item name="colorAccent">@color/date_picker_dialog_header_background</item>  <!--header background-->
    <item name="android:windowBackground">@color/date_picker_dialog_background</item>     <!--calendar background-->
    <item name="android:colorControlActivated">@color/date_picker_dialog_selected_day</item> <!--selected day-->
    <item name="android:textColorPrimary">@color/date_picker_dialog_selected_month</item> <!--days of the month-->
    <item name="android:textColorSecondary">@color/date_picker_dialog_day_of_week</item>    <!--days of the week-->
</style>

colors.xml

<color name="date_picker_dialog_header_background">@color/colorPrimaryDark</color>
<color name="date_picker_dialog_background">#00FFFFFF</color>
<color name="date_picker_dialog_selected_day">@color/colorAccent</color>
<color name="date_picker_dialog_selected_month">#B71C1C</color>
<color name="date_picker_dialog_day_of_week">#611B1B</color>

然后添加以创建日期选择器:

DatePickerDialog dialog = new DatePickerDialog(
        MainActivity.this,
        R.style.DatePickerDialogStyle,
        mDateSetListener,
        year,
        month,
        day);

您可以将date_picker_dialog_background设置为#00FFFFFF,而不必调用:

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
yuvru6vn

yuvru6vn2#

在Android〉29上,您无法设置color.xml only十六进制

相关问题