0

私のコードは GridView を見つけることができませんandroid:id="@+id/grid"

私が使用するグリッドビューを見つけるには:GridView grid = (GridView) ViewAlbum.this.findViewById(R.id.grid);

ASyncTask私はテーブルの外に出なければなりませんadapter。正常に動作していますが、検索しようとするとエラーが発生します。mysqlMysqlgridview

ここにそのonPostExecute部分があります:

   protected void onPostExecute(String result){
            // dismiss dialog
            pDialog.dismiss();      
            // Add adapter to the list
            ViewAlbumAdapter adapter = new ViewAlbumAdapter(ViewAlbum.this, photoList);
            GridView grid = (GridView) ViewAlbum.this.findViewById(com.example.whs.R.id.grid);
            grid.setAdapter(adapter);
            grid.setOnItemClickListener(new OnItemClickListener(){
                public void onItemClick(AdapterView<?> a, View v,
                        int position, long id) {
                // do something
                }
            });
        }

およびグリッドビュー:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ViewAlbum" >

    <GridView android:id="@+id/grid"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="50dp"
        android:horizontalSpacing="5dp"
        />   

</RelativeLayout>

エラーのログは次のとおりです。

03-02 18:07:43.545: E/AndroidRuntime(16432): FATAL EXCEPTION: main
03-02 18:07:43.545: E/AndroidRuntime(16432): java.lang.NullPointerException
03-02 18:07:43.545: E/AndroidRuntime(16432):    at com.example.whs.ViewAlbum$LoadAllItems.onPostExecute(ViewAlbum.java:139)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at com.example.whs.ViewAlbum$LoadAllItems.onPostExecute(ViewAlbum.java:1)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at android.os.AsyncTask.finish(AsyncTask.java:631)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at android.os.Looper.loop(Looper.java:137)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at android.app.ActivityThread.main(ActivityThread.java:4898)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at java.lang.reflect.Method.invokeNative(Native Method)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at java.lang.reflect.Method.invoke(Method.java:511)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
03-02 18:07:43.545: E/AndroidRuntime(16432):    at dalvik.system.NativeStart.main(Native Method)
4

2 に答える 2

0

android.R をインポートしていないことを確認してください (Eclipse はこれを提案します)。パッケージの .R をインポートする必要があります

于 2013-03-02T14:12:01.993 に答える
0
GridView grid = (GridView) ViewAlbum.this.findViewById(com.example.whs.R.id.grid);

この方法ではビューを取得できません。

非同期タスクが同じアクティビティの内部クラスである場合は、次のように get を呼び出します

GridView grid = (GridView) getActivity().findViewById(com.example.whs.R.id.grid);

非同期タスクが別のクラスにある場合は、ビューをインフレートしてグリッドビューにアクセスする必要があります

于 2013-03-02T16:48:20.783 に答える