在这里,我创建了 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/