Java 安卓可以';t使用属性值膨胀布局文件
我正在开发一款可以在夜间模式和日间模式之间切换的应用程序 我用这些值创建了一个attrs文件Java 安卓可以';t使用属性值膨胀布局文件,java,android,xml,android-layout,android-night-mode,Java,Android,Xml,Android Layout,Android Night Mode,我正在开发一款可以在夜间模式和日间模式之间切换的应用程序 我用这些值创建了一个attrs文件 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="ds" > <attr name="backgroundcolor" format="color"/> <attr name="cardbackground
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ds" >
<attr name="backgroundcolor" format="color"/>
<attr name="cardbackground" format="color"/>
<attr name="textcolor" format="color"/>
<attr name="tintcolor" format="color"/>
<attr name="buttoncolor" format="color"/>
</declare-styleable>
</resources>
因此,运行应用程序时会出现此错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.slimshady.newsreaderfinal, PID: 5440
android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
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 com.example.slimshady.newsreaderfinal.HorizontalPagerAdapter.instantiateItem(HorizontalPagerAdapter.java:40)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1010)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1158)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1092)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:22071)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:22071)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:401)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724)
at android.view.View.measure(View.java:22071)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2422)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1504)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1761)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030036 a=-1}
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:944)
at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
at android.view.View.<init>(View.java:4768)
at android.view.ViewGroup.<init>(ViewGroup.java:597)
at android.widget.LinearLayout.<init>(LinearLayout.java:234)
at android.widget.LinearLayout.<init>(LinearLayout.java:230)
at android.widget.LinearLayout.<init>(LinearLayout.java:226)
... 55 more
Application terminated.
E/AndroidRuntime:致命异常:主
进程:com.example.slimshady.newsreaderfinal,PID:5440
android.view.InflateException:二进制XML文件行#2:二进制XML文件行#2:膨胀类时出错
原因:android.view.InflateException:二进制XML文件行#2:膨胀类时出错
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Constructor.newInstance0(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:334)
位于android.view.LayoutInflater.createView(LayoutInflater.java:647)
位于com.android.internal.policy.PhoneLayoutFlater.onCreateView(phoneLayoutFlater.java:58)
位于android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
在android.view.LayoutInflater.充气(LayoutInflater.java:423)
在com.example.slimshady.newreaderfinal.HorizontalPagerAdapter.InstanceItem(HorizontalPagerAdapter.java:40)上
位于android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1010)
位于android.support.v4.view.ViewPager.populate(ViewPager.java:1158)
在android.support.v4.view.ViewPager.populate上(ViewPager.java:1092)
在android.support.v4.view.ViewPager.onMeasure上(ViewPager.java:1622)
在android.view.view.measure(view.java:22071)
位于android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
在android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)上
在android.view.view.measure(view.java:22071)
位于android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
在android.view.view.measure(view.java:22071)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
位于android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
在android.view.view.measure(view.java:22071)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
位于android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:401)
在android.view.view.measure(view.java:22071)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
在android.view.view.measure(view.java:22071)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
位于android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
位于android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
位于android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
在android.view.view.measure(view.java:22071)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
位于com.android.internal.policy.DecorView.onMeasure(DecorView.java:724)
在android.view.view.measure(view.java:22071)
在android.view.ViewRootImpl.performMeasure上(ViewRootImpl.java:2422)
在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1504)
在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1761)
位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
位于android.view.Choreographer.doCallbacks(Choreographer.java:723)
位于android.view.Choreographer.doFrame(Choreographer.java:658)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)中
位于android.os.Handler.handleCallback(Handler.java:790)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
原因:java.lang.UnsupportedOperationException:未能解析索引13处的属性:TypedValue{t=0x2/d=0x7f030036 a=-1}
位于android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:944)
位于android.content.res.TypedArray.getDrawable(TypedArray.java:928)
在android.view.view.(view.java:4768)
位于android.view.ViewGroup(ViewGroup.java:597)
位于android.widget.LinearLayout.(LinearLayout.java:234)
位于android.widget.LinearLayout.(LinearLayout.java:230)
位于android.widget.LinearLayout.(LinearLayout.java:226)
... 55多
申请终止。
我做错了什么?找不到此联机解决方案,因此我正在创建此线程。不要使用styleables,在new values night目录中创建另一个styles.xml,并使用更改的值创建另一个AppTheme副本
当展开
视图时,相关属性和值将从布局展开器所使用的上下文上的主题
中提取。在这种情况下,很明显传递给HorizontalPagerAdapter
的上下文
上没有正确的主题
,如中所示
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:minHeight="500dp"
android:layout_margin="5dp"
android:layout_height="match_parent"
android:background="?attr/backgroundcolor">
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
card_view:cardCornerRadius="7dp"
card_view:contentPadding="10dp"
android:background="?attr/cardbackground">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="?attr/backgroundcolor">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="200dp"
android:src="@drawable/images"
android:scaleType="centerCrop"/>
<TextView
android:id="@+id/header"
android:layout_width="wrap_content"
android:padding="2dp"
android:text="Hello"
android:textColor="?attr/textcolor"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/mNews"
android:layout_width="wrap_content"
android:padding="2dp"
android:layout_height="wrap_content"
android:text="Asam"
android:layout_marginTop="10dp"
android:textSize="16sp"
android:textStyle="italic"
android:textColor="?attr/textcolor"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
public class HorizontalPagerAdapter extends PagerAdapter {
String mResources[] = {"spider man description", "Iron man description", "batman description", "superman description"};
String mHeader[] = {"Spider-Man", "Iron Man", "BatMan", "Super Man"};
int mImages[] = {R.drawable.images, R.drawable.ironman, R.drawable.batman, R.drawable.super_man};
Context mContext;
LayoutInflater mLayoutInflater;
public HorizontalPagerAdapter(Context context) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return mResources.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.content_main, container, false);
TextView newsHeader = (TextView) itemView.findViewById(R.id.header);
TextView newsContent = (TextView) itemView.findViewById(R.id.mNews) ;
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
newsHeader.setText(mHeader[position]);
newsContent.setText(mResources[position]);
imageView.setImageResource(mImages[position]);
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
}
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.slimshady.newsreaderfinal, PID: 5440
android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
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 com.example.slimshady.newsreaderfinal.HorizontalPagerAdapter.instantiateItem(HorizontalPagerAdapter.java:40)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1010)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1158)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1092)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:22071)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:22071)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:401)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724)
at android.view.View.measure(View.java:22071)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2422)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1504)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1761)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f030036 a=-1}
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:944)
at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
at android.view.View.<init>(View.java:4768)
at android.view.ViewGroup.<init>(ViewGroup.java:597)
at android.widget.LinearLayout.<init>(LinearLayout.java:234)
at android.widget.LinearLayout.<init>(LinearLayout.java:230)
at android.widget.LinearLayout.<init>(LinearLayout.java:226)
... 55 more
Application terminated.