java - GridView -NullPointerException 错误 - 尝试访问 "child imageview"

标签 java android

在这里,我创建了 64 个 ImageView 的 Gridview(在 xml 中),并根据输入字符串尝试在不同位置加载不同的图像。

package com.example.android.chess;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.GridView;
import android.widget.ImageView;

 public class MainActivity extends AppCompatActivity {


 @Override
 protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
    GridView gridView  = (GridView) findViewById(R.id.gridView1);  //gridView null


    String FEN="/rnbqkbnr/pppppppp/8/8/8/8/8/8/PPPPPPPP/RNBQKBNR/";
    LoadPosition(gridView, FEN);
}
  public void LoadPosition(GridView gridView, String FEN)
{ 
    int i=0;
    ImageView child;
    for(int l=0; l<gridView.getCount(); l++) {
         child= (ImageView) gridView.getChildAt(l);
         char c = FEN.charAt(i);
        if (c=='/')
            i=i+1;

        else if(Character.isDigit(c)) {
                i=i+1;                
                l = l + c-1;
        }

        else
            {
            child = (ImageView) gridView.getChildAt(l);
            c = FEN.charAt(i);
            LoadPieceImage(child,c);
             i=i+1
            }

    }
}

}

LoadPieceImage(child,c);是一种根据字符c加载不同图像的方法。

我收到 java.lang.NullPointerException ,gridView 显示为 null 并且 因此 gridView.getChildAt(i)。

xml...

 <?xml version="1.0" encoding="utf-8"?>
 <ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
   >

    <GridView
    android:id="@+id/gridView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:columnCount="8"
    android:layout_gravity="center"
    android:padding="2dp"
    android:background="#8C8C8C"
    >
    <ImageView

        android:layout_width="40dp"
        android:layout_height="40dp"
        android:gravity="center"
        android:background="#ffffff"
        />
      <ImageView
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="#8C8C8C"
        android:gravity="center" />       
           ....................................
      </GridView>
     </ScrollView>

请帮我解决这个问题

最佳答案

如果您希望 contentview 使用 findViewByID 找到 gridview,您应该尝试以下操作:(或者简单地更改 gridview 的 GetView 函数并使用它从那里获取 super View )

super.onCreate(savedInstanceState); 
setContentView(R.layout.grid_layout); // attach the layout
grid = (GridView) findViewById(R.id.grid); // id should be found now

ps。另外,我看不到您将适配器设置为 gridview 的位置,这可能也会导致问题。

关于java - GridView -NullPointerException 错误 - 尝试访问 "child imageview",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43332369/

相关文章:

java - 如何在Java中从文件中读取特定单词后的int

java - 始终在重载构造函数之后执行一些代码

java - 父类(super class)访问检查失败 : class com. sun.javafx.sg.prism.web.NGWebView

android - 回收的 recyclerview 项目保持旧的背景颜色

android - 选择了闪光模式,但相机无法使用这些闪光模式拍摄图像

Java Web Start 安全警告替代方案

java - Java(Awt)中的全屏窗口事件在哪里?

android - 我们可以在任何 Windows Phone 上安装 Android 操作系统,反之亦然,iPhone 也一样,反之亦然吗?

android - 点击通知启动 Activity 两次

android - 尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'