Android 网格视图教程,在空对象上调用
我是Java和Android Studio的新手 我正在关注这一点,试图让网格工作 我创建了一个新的裸体应用程序 我遵循了教程,但在下面的代码块中出现了一个错误Android 网格视图教程,在空对象上调用,android,android-studio,Android,Android Studio,我是Java和Android Studio的新手 我正在关注这一点,试图让网格工作 我创建了一个新的裸体应用程序 我遵循了教程,但在下面的代码块中出现了一个错误 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GridView gridview = (GridView) findViewById(R.id.gridview); gridview.se
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
在这一点上,我选择了第一个并将其翻译为
new AdapterView.OnItemClickListener()
错误消失了
在我尝试运行教程之前,我没有其他问题。我犯了以下错误
Caused by: java.lang.NullPointerException:
Attempt to invoke virtual method 'void android.widget.GridView.setAdapter
(android.widget.ListAdapter)' on a null object reference
at com.example.shiftedrec.myandroid.MainActivity.onCreate(MainActivity.java:24)
第24行是指:
gridview.setAdapter(new ImageAdapter(this));
所以我现在的假设是(this)
为空。从这里开始:
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
如果这是空的,那么如何修复错误呢?谢谢你容忍我
更新
我将发布xml
activity_main.xml
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="50dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
gridView
是空对象,R.id.gridView
可能是不正确的id。请检查XML布局文件
说明:this
不能为null
,因为onCreate
只能在对象实例上调用。另外,如果此
为null,则异常将在ImageAdapter
类中的某个位置抛出
编辑:由于id是正确的,但您忘记调用
setContentView(R.layout.activity\u main)
gridView
是空对象,R.id.gridView
可能是错误的id。请检查XML布局文件
说明:this
不能为null
,因为onCreate
只能在对象实例上调用。另外,如果此
为null,则异常将在ImageAdapter
类中的某个位置抛出
编辑:由于id正确,但您忘记调用
setContentView(R.layout.activity\u main)
您缺少setContentView(R.layout.activity\u main)代码>在super.onCreate(savedInstanceState)旁边代码>您缺少设置内容视图(R.layout.activity\u main)代码>在super.onCreate(savedInstanceState)旁边代码>在我看来,使用GridLayoutManager的RecyclerView比GridView更好。试试看。它确实很容易实现和管理。在我看来,使用GridLayoutManager的RecyclerView比GridView更好。试试看。它真的很容易实现和管理。Andro Selva是正确的。找不到GridView,因为您忘记调用setContentView(R.layout.activity\u main)
。我说的其他一切都是正确的,我会修改我的答案。安德罗·塞尔瓦是正确的。找不到GridView,因为您忘记调用setContentView(R.layout.activity\u main)
。我说的其他一切都是正确的,我会修改我的答案。
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="50dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>