在使用ImageView和ImageButton类时出错

时间:2018-03-15 06:48:26

标签: java android android-layout android-fragments fragment

我一直在尝试在我的片段类中添加Imageview,但是我得到了错误,在我运行应用程序之后,它因“Error Inflating class Imageview”错误而停止。但是,当我删除I​​mageview并添加Textview或Button时,它只能正常工作,只有Imageview和ImageButton ......它会抛出错误。

我尝试将android:src更改为app:srcCompat =但它也不起作用,图像文件在60kb的范围内也非常小。

这是错误日志

03-15 12:26:49.540 30218-30218/com.nepalpolice.cdp E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
03-15 12:26:49.680 30218-30218/com.nepalpolice.cdp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.nepalpolice.cdp, PID: 30218
                                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nepalpolice.cdp/com.nepalpolice.cdp.MainActivity}: android.view.InflateException: Binary XML file line #10: Error inflating class ImageButton
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                                         at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                         at android.os.Looper.loop(Looper.java:136)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5018)
                                                                         at java.lang.reflect.Method.invokeNative(Native Method)
                                                                         at java.lang.reflect.Method.invoke(Method.java:515)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                         at dalvik.system.NativeStart.main(Native Method)
                                                                      Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class ImageButton
                                                                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
                                                                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                         at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                         at com.nepalpolice.cdp.dates.onCreateView(dates.java:36)
                                                                         at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
                                                                         at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
                                                                         at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
                                                                         at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
                                                                         at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
                                                                         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)
                                                                         at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
                                                                         at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:554)
                                                                         at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
                                                                         at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
                                                                         at android.app.Activity.performStart(Activity.java:5248)
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                                         at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                         at android.os.Looper.loop(Looper.java:136) 
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5018) 
                                                                         at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                         at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                                         at dalvik.system.NativeStart.main(Native Method) 
                                                                      Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f02006b
                                                                         at android.content.res.Resources.getValue(Resources.java:1123)
                                                                         at android.support.v7.widget.ResourcesWrapper.getValue(ResourcesWrapper.java:204)
                                                                         at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:331)
                                                                         at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:196)
                                                                         at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:189)
                                                                         at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
                                                                         at android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:54)
                                                                         at android.support.v7.widget.AppCompatImageButton.<init>(AppCompatImageButton.java:66)
                                                                         at android.support.v7.widget.AppCompatImageButton.<init>(AppCompatImageButton.java:56)
                                                                         at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:118)
                                                                         at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1026)
                                                                         at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1083)
                                                                         at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:172)
                                                                     	at android

我的片段布局是

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">


    <!--TextView and Button displayed in First Fragment -->
<ImageButton android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    app:srcCompat="@drawable/eka"
    android:layout_marginTop="100dp"
    android:text="This is First Fragment"
    android:textSize="25sp"
    xmlns:android="http://schemas.android.com/apk/res/android" />

<Button
android:id="@+id/firstButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"

android:text="First Fragment"

android:textSize="20sp"
android:textStyle="bold" />
    </RelativeLayout>

我的片段类是

package com.nepalpolice.cdp;


import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;


/**
 * Created by Sagar on 2017/09/23.
 */


public class dates extends Fragment {


    View view;
    Button firstButton;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
// Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_dates, container, false);
// get the reference of Button
        firstButton = (Button) view.findViewById(R.id.firstButton);
// perform setOnClickListener on first Button
        firstButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
// display a message by using a Toast
                Toast.makeText(getActivity(), "First Fragment", Toast.LENGTH_LONG).show();
            }
        });
        return view;
    }
}

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

使用android.support.v7.widget.AppCompatImageButton代替ImageButton

正在使用app:srcCompat

用法应该是这样的: -

android.support.v7.widget.AppCompatImageButton - &gt; app:srcCompat

ImageButton ----&gt; android:src

在你的xml中: -

 <android.support.v7.widget.AppCompatImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"         
    .....
    .....
    app:srcCompat="@drawable/eka"
    />

答案 1 :(得分:0)

尝试使用android:src="@drawable/eka"代替app:srcCompat="@drawable/eka"