0

Я делаю fragements в пользовательском listview, в то время как извлечение json-данных из базы данных сервера в android mobile показывает ошибку, такую ​​как data.java.lang. исключение нулевого указателя. скажите, пожалуйста, как решить эту проблему, я упомянуть мой код нижеОшибка при передаче data.java.lang.Null исключение указателя при получении json-данных

 i try this code 
    public class MyListFragment1 extends ListFragment { 
private static final Context Context = null; 
ImageView back; 
String url = Main.url; 
String Qrimage; 
Bitmap bmp; 

AppetiserFragment adapter; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    LayoutInflater gridInflater = (LayoutInflater) getActivity() 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = gridInflater.inflate(R.layout.applistviewfragment, null); 


    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); 

    InputStream is = null; 
    String result = ""; 
    JSONObject jArray = null; 
    try { 
     HttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url + "test.php"); 
     HttpResponse response = httpClient.execute(httpPost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
    } catch (Exception e) { 
     // TODO: handle exception 
     Log.e("Log", "Error in Connection" + e.toString()); 

     // Intent intent = new Intent(ViewQRCode.this, PimCarder.class); 

     // startActivity(intent); 

    } 
    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
     jArray = new JSONObject(result); 
     JSONArray json = jArray.getJSONArray("appetiser"); 
     ListView list = (ListView) v.findViewById(R.id.list); 

     adapter = new AppetiserFragment(Context, json); 
     list.setAdapter(adapter); 


    } catch (Exception e) { 
     // TODO: handle exception 
     Log.e("log", "Error in Passing data" + e.toString()); 
    } 
} 

    } 

AppetiserFragment.class

 public class AppetiserFragment extends BaseAdapter { 
public static ArrayList<String> arr = new ArrayList<String>(); 
public static ArrayList<String> itemprice = new ArrayList<String>(); 
public static ArrayList<Bitmap> image = new ArrayList<Bitmap>(); 
String url = Main.url; 
public Context Context; 
String qrimage; 
Bitmap bmp, resizedbitmap; 
Bitmap[] bmps; 
Activity activity = null; 
private LayoutInflater inflater; 

private ImageView[] mImages; 
String[] itemimage; 
TextView[] tv; 
String itemname, price, desc, itemno; 
String[] itemnames, checkeditems, itemnos; 
String[] prices; 
String[] descs; 
HashMap<String, String> map = new HashMap<String, String>(); 

public AppetiserFragment(Context context, JSONArray imageArrayJson) { 
    Context = context; 
    System.out.println(imageArrayJson);//here i can print json data 
    // (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    // imageLoader=new ImageLoader(activity); 
    inflater = LayoutInflater.from(context); 
    this.mImages = new ImageView[imageArrayJson.length()];(here after code not runs correctly i thought here only the problem) 
    this.bmps = new Bitmap[imageArrayJson.length()]; 
    this.itemnames = new String[imageArrayJson.length()]; 
    this.prices = new String[imageArrayJson.length()]; 
    this.descs = new String[imageArrayJson.length()]; 
    this.itemnos = new String[imageArrayJson.length()]; 
    try { 

     for (int i = 0; i < imageArrayJson.length(); i++) { 
      JSONObject image = imageArrayJson.getJSONObject(i); 

      qrimage = image.getString("itemimage"); 
      itemname = image.getString("itemname"); 
      itemno = new Integer(i + 1).toString(); 
      price = image.getString("price"); 
      desc = image.getString("itemdesc"); 
      System.out.println(price); 
      itemnames[i] = itemname; 
      prices[i] = price; 
      descs[i] = desc; 
      itemnos[i] = itemno; 

      byte[] qrimageBytes = Base64.decode(qrimage.getBytes()); 

      bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0, 
        qrimageBytes.length); 
      int width = 100; 
      int height = 100; 
      resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, 
        true); 
      bmps[i] = bmp; 

      mImages[i] = new ImageView(context); 
      mImages[i].setImageBitmap(resizedbitmap); 

      mImages[i].setScaleType(ImageView.ScaleType.FIT_START); 

      // tv[i].setText(itemname); 
     } 
     System.out.println(map); 

    } catch (Exception e) { 
     // TODO: handle exception 
    } 
} 

public AppetiserFragment() { 
    // TODO Auto-generated constructor stub 
} 

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

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

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

public View getView(final int position, View convertView, ViewGroup parent) { 

    View view = convertView; 
    final ViewHolder viewHolder; 
    if (view == null) { 
     view = inflater.inflate(R.layout.appetiserlistview, null); 
     System.out.println("prakash"); 
     viewHolder = new ViewHolder(); 
     viewHolder.image = (ImageView) view 
       .findViewById(R.id.appetiserimage); 
     viewHolder.text = (TextView) view.findViewById(R.id.appetisertext); 
     viewHolder.desc = (TextView) view.findViewById(R.id.appetiserdesc); 
     viewHolder.price = (TextView) view 
       .findViewById(R.id.appetiserprice); 
     viewHolder.appitemnum = (TextView) view 
       .findViewById(R.id.appitemno); 
     // viewHolder.checkbox = (CheckBox) view.findViewById(R.id.bcheck); 

     view.setTag(viewHolder); 
    } else { 
     viewHolder = (ViewHolder) view.getTag(); 
    } 
    viewHolder.image.setImageBitmap(bmps[position]); 
    viewHolder.appitemnum.setText(itemnos[position]); 
    viewHolder.price.setText(prices[position]); 
    viewHolder.desc.setText(descs[position]); 
    // viewHolder.checkbox.setTag(itemnames[position]); 
    ViewHolder holder = (ViewHolder) view.getTag(); 
    holder.text.setText(itemnames[position]); 

    return view; 
} 

public void clear() { 
    arr.clear(); 
    itemprice.clear(); 
    image.clear(); 
} 

static class ViewHolder { 

    protected TextView text, price, desc, appitemnum; 
    protected ImageView image; 
    public static CheckBox checkbox = null; 
} 

} пожалуйста скажите мне, как решить эту проблему ... пожалуйста, помогите мне

+0

Где ошибка? В какой строке? – dmon

+0

qrimage = image.getString ("itemimage"); – naveen

ответ

1

Первое, что я вижу, это то, что вы забыли инициализировать свой контекст.

Изменить этот

private static final Context Context = null; //variable name should not be reserved keyword 

в

private Context context= null; 
context= getActivity().getApplicationContext(); <<<<<<<<<<<<<<< 



adapter = new AppetiserFragment(Context, json); 
+0

adapter = new AppetiserFragment (Context, json); я звонил .. но вместо контекста, если я сохранил это означает, что он показывает ошибку – naveen

+0

Сэр, я уже сделал пользовательское listview. в том, что я передал это, json в качестве конструктора в AppetiserFragment. но здесь, в списке фрагментов, если передать это означает, что он показывает ошибку – naveen

+0

Я инициализирую при запуске частного статического финального контекста Context = null; – naveen

1
public class mm { 
    private static String p; 

    static void ll (String h){ 
     p=h;  
    } 

    static String get(){  
     return p; 
    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     ll("Mozambique is a nica country"); 

     System.out.println(get()); 
    } 
} 

Примечание: - метод возвращения не должен иметь никаких параметров.