我是Java和Android Studio的新手。
我跟随此tutorial,尝试让网格工作。
我创建了一个新的准系统应用程序。
我遵循了教程,但是我在下面的块中收到错误。
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();
}
});
}
此时,我收到错误,说
? android.widget.adapterview.OnItemClickListener? (multiple choices)
此时我选择了第一个并将其翻译为
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;
}
这是null,我该如何修复错误?谢谢你的支持。
更新 我将发布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"
/>
答案 0 :(得分:4)
您错过了setContentView(R.layout.activity_main);
super.onCreate(savedInstanceState);
答案 1 :(得分:0)
gridView
是空对象,R.id.gridview
可能是不正确的ID。检查XML布局文件。
说明:this
不能为null
,因为onCreate
只能在Object实例上调用。此外,如果this
为null,则异常将在ImageAdapter
类中的某处抛出。
修改:Andro Selva pointed out here我的ID是正确的,但您忘记拨打setContentView(R.layout.activity_main)