Java 从android.com运行hellogridview时出现问题

Java 从android.com运行hellogridview时出现问题,java,android,android-emulator,Java,Android,Android Emulator,我之前曾就此提出过一个问题,现在我没有任何错误,但当我尝试在模拟android设备上运行我的应用程序时,它出现了一个错误,即 抱歉,应用程序Hello网格视图 (process com.HelloGridView)具有 他突然停了下来。请试一试 再说一遍 以下是文件树,这些文件稍后将遵循: HelloGridView src com.HelloGridView HelloGridView.java ImageAdapter.java gen Android 2.2 a

我之前曾就此提出过一个问题,现在我没有任何错误,但当我尝试在模拟android设备上运行我的应用程序时,它出现了一个错误,即

抱歉,应用程序Hello网格视图 (process com.HelloGridView)具有 他突然停了下来。请试一试 再说一遍

以下是文件树,这些文件稍后将遵循:

HelloGridView  
src  
com.HelloGridView  
HelloGridView.java  
ImageAdapter.java  
gen  
Android 2.2  
assets  
res  
drawable( with all the pics)  
HelloGridView.java

package com.HelloGridView;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

public class HelloGridView extends Activity {
    /** Called when the activity is first created. */
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            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(HelloGridView.this, "" + position, Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
这是我的main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:columnWidth="90dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

如果从ImageAdapter类中删除这些行,一切都将正常工作

public ImageAdapter(HelloGridView c) {
    // TODO Auto-generated constructor stub
}
正在调用此构造函数,但未设置上下文。我不是Java专家,但我认为它会被调用,因为它更具体

您已经有了这个构造函数,它将处理上下文的设置

public ImageAdapter(Context c) {
    mContext = c;
}
另一个解决方案是将您现有的构造函数更改为该构造函数,它也可以工作

public ImageAdapter(HelloGridView c) {
    mContext = c;
}

问题在于教程中的这一行 “将图像文件保存到项目的res/drawable/目录中。”

在您的项目中,您没有此文件夹,而是具有/drawable hdpi(ldpi…等)

所以要解决这个问题,只需在res目录下创建一个新文件夹,并将其称为“drawable”,然后将图像导入该文件夹

在AndroidManifest.xml中,将行“@drawable/icon”更新到您的文件夹中

public ImageAdapter(HelloGridView c) {
    mContext = c;
}