Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将android.widget.ImageButton强制转换为android.widget.RelativeLayout_Android - Fatal编程技术网

无法将android.widget.ImageButton强制转换为android.widget.RelativeLayout

无法将android.widget.ImageButton强制转换为android.widget.RelativeLayout,android,Android,我是Android编程新手,我正在尝试编写一个简单的游戏 问题是我没有走那么远,我遇到了我的第一个问题,我试图在互联网上寻找解决方案,但没有成功 错误消息: android.widget.ImageButton无法强制转换为 android.widget.RelativeLayout 错误出现在这一行代码上: Btn = (RelativeLayout) findViewById(R.id.imagebutton1); ImageView btn; btn = (ImageView) roo

我是Android编程新手,我正在尝试编写一个简单的游戏

问题是我没有走那么远,我遇到了我的第一个问题,我试图在互联网上寻找解决方案,但没有成功

错误消息:

android.widget.ImageButton
无法强制转换为
android.widget.RelativeLayout

错误出现在这一行代码上:

Btn = (RelativeLayout) findViewById(R.id.imagebutton1);
ImageView btn;

btn = (ImageView) rootView.findViewById(R.id.your_image_button);
我正在使用
Eclipse
并尝试清理项目,但也没有成功

Java文件:

package com.example.tapthevac;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {

RelativeLayout Btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Btn = (RelativeLayout) findViewById(R.id.imagebutton1);

    Btn.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return false;
        }

    });

    Btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

        }

    });

}

}
XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/re/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/space"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.tapthevac.MainActivity" >

<ImageButton
    android:id="@+id/imagebutton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/start" />

</RelativeLayout>

查看您的xml文件-
imagebutton1
是ImageButton的id,而不是RelativeLayout,因此请将
Btn
的类型更改为ImageButton,并写出以下行:

ImageButton Btn;
....
Btn = (ImageButton) findViewById(R.id.imagebutton1);
代码的其他部分没有问题。

问题是:

Btn = (RelativeLayout) findViewById(R.id.imagebutton1);
将其更改为:

Btn = (ImageView) findViewById(R.id.imagebutton1);
您正在尝试将ImageView转换为RelativeLayout
  • 您应该强制转换为ImageButton,因为您的视图是ImageView按钮
  • Btn=(ImageButton)findViewById(R.id.imagebutton1)

    使用:

    Btn = (RelativeLayout) findViewById(R.id.imagebutton1);
    
    ImageView btn;
    
    btn = (ImageView) rootView.findViewById(R.id.your_image_button);
    

    确保您了解java中基本的casting是如何工作的。

    您到底想做什么。。。??