проблемы с запуском hellogridview с android.com - PullRequest
2 голосов
/ 30 января 2011

Я уже писал вопрос об этом, теперь у меня нет ошибок, но когда я пытаюсь запустить свое приложение на моем имитированном устройстве Android, появляется сообщение об ошибке

извините приложение Hello Grid View (процесс 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();
                }
            });
        }
    }

ImageAdapter.java

package com.HelloGridView;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
    private Context mContext;

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

    public ImageAdapter(HelloGridView c) {
        // TODO Auto-generated constructor stub
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    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;
    }

    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7
    };
}  

вот мой 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"
/>

Ответы [ 2 ]

3 голосов
/ 30 января 2011

Если вы удалите эти строки из класса ImageAdapter, все будет работать.

public ImageAdapter(HelloGridView c) {
    // TODO Auto-generated constructor stub
}

Этот конструктор вызывается, а ваш контекст не устанавливается. Я не эксперт по Java, но я предполагаю, что его вызывают, потому что он более конкретен.

У вас уже есть этот конструктор, который будет обрабатывать настройку контекста.

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

Другое решение - изменить существующий конструктор на этот, и он тоже будет работать.

public ImageAdapter(HelloGridView c) {
    mContext = c;
}
1 голос
/ 11 марта 2011

Проблема из-за этой строки в руководстве "Сохраните файлы изображений в директории проекта res / drawable /."

В вашем проекте у вас нет этой папки, а вместо этого / drawable-hdpi (ldpi... и т. д.)

, поэтому решите это, просто создайте новую папку в каталоге res, назовите ее "drawable" и импортируйте ваши изображения в эту папку.

ИЛИ

в AndroidManifest.xml обновите строку «@ drawable / icon» в вашей папке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...