Android GridView开发类型不兼容报错 无法访问控件问题求助
问题解决方案
核心错误原因
你出现的报错是类名冲突导致的类型引用错误:你自己写的Activity类命名为GridView,和Android原生系统控件android.widget.GridView同名,代码中错误导入了自定义的Activity类作为GridView的类型,导致findViewById返回的系统控件View无法转换为你自定义的Activity类型,触发类型不兼容报错。
分步解决方法
- 第一步:重命名你的Activity类,不要和系统控件重名,比如改为
GridViewActivity,同步修改AndroidManifest文件中该Activity的注册信息。 - 第二步:删除代码中错误的导入语句
import com.example.listviewgridview.GridView,替换为导入系统原生GridView控件的语句import android.widget.GridView。 - 第三步:调整findViewById代码,增加显式类型转换,兼容低版本Android SDK的类型推导规则。
- 第四步:修改布局文件中
tools:context属性,改为和修改后的Activity类名对应。
修改后完整代码
Activity代码
package com.example.listviewgridview; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.GridView; // 类名修改为不冲突的名称 public class GridViewActivity extends AppCompatActivity { String[] language_names = new String[]{ "Android Studio", "Angular JS", "BootStrap", "C", "CSS", "Github", "HTML", "JAVA", "JavaScript", "JQuery", "Nodejs", "PHP", "Python", "React", "Ruby", "Sql", "Wordpress" }; GridView gridView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid_view); // 增加显式类型转换 gridView = (GridView) findViewById(R.id.main); } }
布局文件代码
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".GridViewActivity"> <GridView android:id="@+id/main" android:verticalSpacing="3dp" android:numColumns="2" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" > </GridView> </LinearLayout>
注意:后续开发自定义类时,不要和Android系统自带的控件、组件类重名,可有效避免同类类型引用冲突问题
内容的提问来源于stack exchange,提问作者Sirigiri Sri Sai Sharanya
相关产品推荐
相关产品推荐

