错误使用orroids拖放API - "错误膨胀类Android.widget.ImageButton"

时间:2014-04-22 21:03:06

标签: android xml drag-and-drop resources

我正在尝试使用Androids拖放功能,如下所示:http://www.techrepublic.com/blog/software-engineer/try-androids-useful-drag-and-drop-api/

要使四个球可以在顶部和底部容器之间拖放。 对于前三个,它工作正常。添加第四个黄色球会导致应用程序崩溃。 我很困惑,因为我没有看到我对待第四球的方式有什么不同。 拿走一个较早的球,并用新球代替它也是一样的 错误。真的很高兴任何想法!我正在使用eclipse。

而不是" red_ball.xml"如上面的链接所述,这些文件如下所示:

   <View xmlns:android="http://schemas.android.com/apk/res/android">
    <ImageView
    android:id="@+id/ball_yellow"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src = "@drawable/ball_8"
    />
    </View>

每个球都有不同的id和src值。

&#34; activity_main.xml&#34;上面链接中的文件在我的程序中看起来像这样,并被称为&#34; startscreen.xml&#34;:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="@drawable/green_bumped_mandelbrot_blackhole"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:weightSum="6"
        tools:context=".StartScreen" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <LinearLayout
                android:id="@+id/containertop"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="2"
                android:orientation="horizontal" >

                <ImageButton
                    android:id="@+id/ball_red"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@null"
                    android:onClick="playSound"
                    android:src="@drawable/ball_4" />

                <ImageButton
                    android:id="@+id/ball_blue"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@null"
                    android:onClick="playSound"
                    android:src="@drawable/ball_6" />

                <ImageButton
                    android:id="@+id/ball_green"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@null"
                    android:onClick="playSound"
                    android:src="@drawable/ball_7" />
                <ImageButton
                    android:id="@+id/ball_yellow"
                    android:layout_width="wrap_content" 
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@null"
                    android:onClick="playSound"
                    android:src="@drawable/ball_8"/>

            </LinearLayout>



            <LinearLayout
                android:id="@+id/containerbottom"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="2"
                android:orientation="horizontal" >

                <ImageButton
                    android:id="@+id/teleporter"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:background="@null"
                    android:onClick="loadOtherDimension"
                    android:src="@drawable/teleport_button" />

                <LinearLayout
                    android:id="@+id/black_hole"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="0.6"
                    android:background="@null"
                    android:src="@drawable/blank_square" >
                </LinearLayout>

                <ImageButton
                    android:id="@+id/square_red"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_weight="1"
                    android:background="@null"
                    android:onClick="playSound"
                    android:src="@drawable/blank_square" />
            </LinearLayout>
        </LinearLayout>

    </RelativeLayout>

xml文件以这种方式使用:

@Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.startscreen);
        findViewById(R.id.ball_red).setOnTouchListener(this);
        findViewById(R.id.ball_blue).setOnTouchListener(this);
        findViewById(R.id.ball_green).setOnTouchListener(this);
        findViewById(R.id.ball_yellow).setOnTouchListener(this);
        findViewById(R.id.containertop).setOnDragListener(this);
        findViewById(R.id.black_hole).setOnDragListener(this);

我收到此错误输出:

:44:15.647: E/AndroidRuntime(18105): FATAL EXCEPTION: main
04-22 22:44:15.647: E/AndroidRuntime(18105): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gnyrfta.fallingobjects/com.gnyrfta.fallingobjects.StartScreen}: android.view.InflateException: Binary XML file line #25: Error inflating class android.widget.ImageButton
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.os.Looper.loop(Looper.java:137)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.ActivityThread.main(ActivityThread.java:4921)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at java.lang.reflect.Method.invokeNative(Native Method)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at java.lang.reflect.Method.invoke(Method.java:511)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at dalvik.system.NativeStart.main(Native Method)
04-22 22:44:15.647: E/AndroidRuntime(18105): Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class android.widget.ImageButton
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.createView(LayoutInflater.java:619)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:316)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.Activity.setContentView(Activity.java:1924)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at com.gnyrfta.fallingobjects.StartScreen.onCreate(StartScreen.java:111)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.Activity.performCreate(Activity.java:5206)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
04-22 22:44:15.647: E/AndroidRuntime(18105):    ... 11 more
04-22 22:44:15.647: E/AndroidRuntime(18105): Caused by: java.lang.reflect.InvocationTargetException
04-22 22:44:15.647: E/AndroidRuntime(18105):    at java.lang.reflect.Constructor.constructNative(Native Method)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.view.LayoutInflater.createView(LayoutInflater.java:593)
04-22 22:44:15.647: E/AndroidRuntime(18105):    ... 26 more
04-22 22:44:15.647: E/AndroidRuntime(18105): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ball_4.xml from drawable resource ID #0x7f020007
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.content.res.Resources.loadDrawable(Resources.java:2265)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.widget.ImageView.<init>(ImageView.java:126)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.widget.ImageButton.<init>(ImageButton.java:87)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.widget.ImageButton.<init>(ImageButton.java:83)
04-22 22:44:15.647: E/AndroidRuntime(18105):    ... 29 more
04-22 22:44:15.647: E/AndroidRuntime(18105): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag View
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:913)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:854)
04-22 22:44:15.647: E/AndroidRuntime(18105):    at android.content.res.Resources.loadDrawable(Resources.java:2262)
04-22 22:44:15.647: E/AndroidRuntime(18105):    ... 33 more

1 个答案:

答案 0 :(得分:0)

现在有效!我只需弄明白为什么......我在sources文件夹而不是ball_4.xml中添加了一个名为ball_5.xml的文件。如果我弄清楚为什么会有所不同,我会发布它。

相关问题