2012-04-20 74 views
0

我試圖將圖像添加到帶有每張圖片下的文本標籤的gridview。當我運行代碼時,它總是強制關閉。我無法弄清楚代碼有什麼問題。Android - 帶有圖標和文本的Gridview

package com.petedroid.euro2012; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class psquads extends Activity 
{ 


@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)); 
} 


public class ImageAdapter extends BaseAdapter 
{ 
    private Context mContext; 

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

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

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

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

    public View getView(int position, View convertView, ViewGroup parent){ 
     View MyView = convertView; 
     if (convertView == null) { 

      //Inflate Layout 
      LayoutInflater li = getLayoutInflater(); 
      MyView = li.inflate(R.layout.griditem, null); 

      //Get Image 
      ImageView iv = (ImageView)MyView.findViewById(R.id.grid_item_image); 
      iv.setImageResource(mThumbIds[position]); 

      //Get Text 
      TextView tv = (TextView)MyView.findViewById(R.id.grid_item_text); 
      tv.setText(names[position]); 
     } 

    return MyView; 
    } 


} 

//Images 
private Integer[] mThumbIds = { 
     R.drawable.croatia, R.drawable.republic, 
     R.drawable.denmark, R.drawable.england, 
     R.drawable.france, R.drawable.germany, 
     R.drawable.greece, R.drawable.ireland, 
     R.drawable.italy, R.drawable.netherlands, 
     R.drawable.poland, R.drawable.portugal, 
     R.drawable.russia, R.drawable.spain, 
     R.drawable.sweden, R.drawable.ukraine,}; 

//Text 
private String[] names={ 
     "Croatia","Czech Republic","Denmark", "England", 
     "France","Germany","Greece", "Ireland", 
     "Italy", "Netherlands", "Poland", "Portugal", 
     "Russia", "Spain", "Sweden", "Ukraine", }; 
} 

這裏是日誌

04-21 00:07:33.384: E/global(27521): Deprecated Thread methods are not supported. 
04-21 00:07:33.384: E/global(27521): java.lang.UnsupportedOperationException 
04-21 00:07:33.384: E/global(27521): at java.lang.VMThread.stop(VMThread.java:85) 
04-21 00:07:33.384: E/global(27521): at java.lang.Thread.stop(Thread.java:1379) 
04-21 00:07:33.384: E/global(27521): at java.lang.Thread.stop(Thread.java:1344) 
04-21 00:07:33.384: E/global(27521): at com.petedroid.euro2012.SplashScreenActivity$1.run(SplashScreenActivity.java:35) 
04-21 00:07:35.368: D/AndroidRuntime(27521): Shutting down VM 
04-21 00:07:35.368: W/dalvikvm(27521): threadid=1: thread exiting with uncaught exception (group=0x4001d7d0) 
04-21 00:07:35.380: E/AndroidRuntime(27521): FATAL EXCEPTION: main 
04-21 00:07:35.380: E/AndroidRuntime(27521): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.petedroid.euro2012/com.petedroid.euro2012.psquads}: java.lang.NullPointerException 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.os.Looper.loop(Looper.java:123) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at java.lang.reflect.Method.invokeNative(Native Method) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at java.lang.reflect.Method.invoke(Method.java:521) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at dalvik.system.NativeStart.main(Native Method) 
04-21 00:07:35.380: E/AndroidRuntime(27521): Caused by: java.lang.NullPointerException 
04-21 00:07:35.380: E/AndroidRuntime(27521): at com.petedroid.euro2012.psquads.onCreate(psquads.java:24) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-21 00:07:35.380: E/AndroidRuntime(27521): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
04-21 00:07:35.380: E/AndroidRuntime(27521): ... 11 more 
04-21 00:08:14.755: I/dalvikvm(27521): threadid=3: reacting to signal 3 
04-21 00:08:17.415: E/dalvikvm(27521): Failed to write stack traces to /data/anr/traces.txt (-1 of 2650): Math result not representable 
04-21 00:08:26.317: I/Process(27521): Sending signal. PID: 27521 SIG: 9 

回答

1

只有兩件事情我可以看到......如果你的代碼行線向上與我的計算,它看起來像findViewById()被返回null爲你的GridView,確保它在你所描述的佈局中。其次看起來像你在splashScreen中調用Thread.stop(),而Thread.stop()在Dalvik VM中沒有實現。

相關問題