Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 网格视图教程,在空对象上调用_Android_Android Studio - Fatal编程技术网

Android 网格视图教程,在空对象上调用

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

我是Java和Android Studio的新手

我正在关注这一点,试图让网格工作

我创建了一个新的裸体应用程序

我遵循了教程,但在下面的代码块中出现了一个错误

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"
    />