2012-11-20 43 views
-3

現在給我這種logcat的錯誤:空指針異常關閉

11-20 11:19:04.729: E/AndroidRuntime(447): FATAL EXCEPTION: main 
11-20 11:19:04.729: E/AndroidRuntime(447): java.lang.NullPointerException 
11-20 11:19:04.729: E/AndroidRuntime(447): at com.example.orderplacemnet.ImageAdapter.getView(OnlineShopping.java:157) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:192) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.View.measure(View.java:8171) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.View.measure(View.java:8171) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.View.measure(View.java:8171) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.View.measure(View.java:8171) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.View.measure(View.java:8171) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.ViewRoot.performTraversals(ViewRoot.java:801) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.os.Looper.loop(Looper.java:123) 
11-20 11:19:04.729: E/AndroidRuntime(447): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-20 11:19:04.729: E/AndroidRuntime(447): at java.lang.reflect.Method.invokeNative(Native Method) 
11-20 11:19:04.729: E/AndroidRuntime(447): at java.lang.reflect.Method.invoke(Method.java:521) 
11-20 11:19:04.729: E/AndroidRuntime(447): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-20 11:19:04.729: E/AndroidRuntime(447): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-20 11:19:04.729: E/AndroidRuntime(447): at dalvik.system.NativeStart.main(Native Method) 

這對於ADD圖像適配器活動的畫廊,但它不工作。 我正在使用android 2.0版本。

logcat的錯誤:

11-20 10:46:36.118: E/AndroidRuntime(420): FATAL EXCEPTION: main 
11-20 10:46:36.118: E/AndroidRuntime(420): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.orderplacemnet/com.example.orderplacemnet.OnlineShopping}: java.lang.NullPointerException 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.os.Looper.loop(Looper.java:123) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-20 10:46:36.118: E/AndroidRuntime(420): at java.lang.reflect.Method.invokeNative(Native Method) 
11-20 10:46:36.118: E/AndroidRuntime(420): at java.lang.reflect.Method.invoke(Method.java:521) 
11-20 10:46:36.118: E/AndroidRuntime(420): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-20 10:46:36.118: E/AndroidRuntime(420): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-20 10:46:36.118: E/AndroidRuntime(420): at dalvik.system.NativeStart.main(Native Method) 
11-20 10:46:36.118: E/AndroidRuntime(420): Caused by: java.lang.NullPointerException 
11-20 10:46:36.118: E/AndroidRuntime(420): at com.example.orderplacemnet.OnlineShopping.onCreate(OnlineShopping.java:51) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-20 10:46:36.118: E/AndroidRuntime(420): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
11-20 10:46:36.118: E/AndroidRuntime(420): ... 11 more 

代碼:

package com.example.orderplacemnet; 

import java.util.ArrayList; 
import java.util.List; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 


import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.Gallery; 
import android.widget.SpinnerAdapter; 
import android.widget.Toast; 

import android.widget.ImageView; 


public class OnlineShopping extends Activity { 

    Gallery myRoseGallery; 
    private List<Drawable> drawables=null; 

// ImageView img; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_online_shopping); 
     myRoseGallery=(Gallery)findViewById(R.id.rosegallery); 
     //img=(ImageView)findViewById(R.id.roseimg); 

     Toast.makeText(this, "dfhgkhj", Toast.LENGTH_SHORT).show(); 


getDrawablesList(); 





     myRoseGallery.setAdapter(new ImageAdapter(this)); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // TODO Auto-generated method stub 
     return super.onCreateOptionsMenu(menu); 
    } 



    private void getDrawablesList() { 


      drawables = new ArrayList<Drawable>(); 
      drawables.add(getResources().getDrawable(R.drawable.rose_five)); 
      drawables.add(getResources().getDrawable(R.drawable.rose)); 
      drawables.add(getResources().getDrawable(R.drawable.rose_two)); 
      drawables.add(getResources().getDrawable(R.drawable.rose_three)); 
      drawables.add(getResources().getDrawable(R.drawable.rose_four)); 


     } 

//  private void setSelectedImage(int selectedImagePosition) { 
// 
//   BitmapDrawable bd = (BitmapDrawable) drawables.get(selectedImagePosition); 
//   Bitmap b = Bitmap.createScaledBitmap(bd.getBitmap(), (int) (bd.getIntrinsicHeight() * 0.9), (int) (bd.getIntrinsicWidth() * 0.7), false); 
//   
// 
//  } 

    } 

class ImageAdapter extends BaseAdapter{ 

    private int[] myRoseImage = { R.drawable.rose, R.drawable.rose_two, 
       R.drawable.rose_three, R.drawable.rose_four,R.drawable.rose_five }; 
    private Context myContext=null; 

    private Activity context=null; 

    private static ImageView iv=null; 

    private List<Drawable> plotsImages=null; 

    private static ViewHolder holder=null; 

    public ImageAdapter(Activity context, List<Drawable> plotsImages) { 

     this.context = context; 
     this.plotsImages = plotsImages; 

    } 
    public ImageAdapter(Context c) { 
     super(); 
     // give yr conext here 
     this.myContext=c; 

    } 

    @Override 
    public int getCount() { 
     // how many image is there 
     return this.myRoseImage.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     //which item is selected 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 


    @Override 
    public View getView(int position, View view, ViewGroup parent) { 
     // display image in yr Image view as per yr view and position 

     if (view == null) { 

       holder = new ViewHolder(); 

       ImageView iv = new ImageView(this.myContext); 

       iv.setPadding(3, 3, 3, 3); 

       view = iv; 

       holder.imageView = iv; 

       view.setTag(holder); 

      } else { 

        holder = (ViewHolder) view.getTag(); 
      } 

      holder.imageView.setImageDrawable(plotsImages.get(position)); 

      holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
      holder.imageView.setLayoutParams(new Gallery.LayoutParams(150, 90)); 

      return iv; 

    } 
    private static class ViewHolder { 
      ImageView imageView; 
     } 

} 
+0

我更新了我的答案,爲您的新LogCat錯誤。 – Sam

回答

4

,如果你還沒有使用setContentView()你不能找到與findViewById()查看...

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.xxx); Add the layout that contains rosegallery 
    myRoseGallery=(Gallery)findViewById(R.id.rosegallery); 

或者,如果畫廊,你想,你可以使用的唯一視圖:(記者瞭解到,畫廊,此類已廢棄,不再在未來支持)

myRoseGallery = new Gallery(this); 



您應該myRoseImagegetItem()返回一個有效ID:

@Override 
    public int getItem(int position) { 
     //which item is selected 
     return myRoseImage[position]; 
    } 

並更新您如何設置getView()圖像:

holder.imageView.setImageResource(getItem(position)); 

你不能叫plotImages.get(position)因爲plotImages仍然是空當您使用此構造函數:

public ImageAdapter(Context c) { 
    super(); 
    // give yr conext here 
    this.myContext=c; 
} 
3

你缺少setContentView();您OnlineShopping活動,以設置Conatin佈局。在super.onCreate(savedInstanceState)後添加setContentView;並在查找任何查看之前:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.Your_layout_id); //add here 
     myRoseGallery=(Gallery)findViewById(R.id.rosegallery); 
     //img=(ImageView)findViewById(R.id.roseimg); 

     Toast.makeText(this, "dfhgkhj", Toast.LENGTH_SHORT).show(); 
+0

感謝伊姆蘭·罕,但我編輯該行,但它仍然沒有工作 –

+0

我編輯該行的setContentView(R.layout.Your_layout_id);但它仍然給我的錯誤... –

+0

@surabhikale:發佈您的修改後的代碼,也最新的日誌,當應用程序崩潰 –