Force close issue when loading image from mysql database

  • Replies:0
Ashfaq
  • Forum posts: 17

Dec 24, 2014, 11:13:43 AM via Website

Hi,

Here is my code for loading data and images from MySQL database but the problem is when i load images the activity force closes.Please help me to fix the error.im new in android.

JAVA

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class News_events extends Fragment {

     private String jsonResult;
     private String url = "http://192.168.2.7/crescentnews/select.php";
     HttpPost httppost;
     StringBuffer buffer;
     HttpResponse response;
     HttpClient httpclient;
     List<NameValuePair> nameValuePairs;
     ProgressDialog dialog = null;
     ImageView img;
     Bitmap bitmap;
     ProgressDialog pDialog;


     InputStream is=null;
     String result=null;
        String line=null;
        int code;

    public News_events(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_news_events, container, false);
        accessWebService();


        return rootView;
    }

    // Async Task to access the web
     private class JsonReadTask extends AsyncTask<String, Void, String> {
      @Override
      protected String doInBackground(String... params) {
          List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);


       HttpClient httpclient = new DefaultHttpClient();
       HttpPost httppost = new HttpPost(params[0]);
       try {

           httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));
        HttpResponse response = httpclient.execute(httppost);
        jsonResult = inputStreamToString(
          response.getEntity().getContent()).toString();
        }

       catch (ClientProtocolException e) {
        e.printStackTrace();
       } catch (IOException e) {
        e.printStackTrace();
       }
       return null;
      }

      private StringBuilder inputStreamToString(InputStream is) {
       String rLine = "";
       StringBuilder answer = new StringBuilder();
       BufferedReader rd = new BufferedReader(new InputStreamReader(is));

       try {
        while ((rLine = rd.readLine()) != null) {
         answer.append(rLine);
        }
       }
        catch (IOException e) {
        // e.printStackTrace();
        Toast.makeText(getActivity().getApplicationContext(),
          "Error..." + e.toString(), Toast.LENGTH_LONG).show();
       }
       return answer;
      }

      @Override
      protected void onPostExecute(String result) {
       display();
      }
     }// end async task

     public void accessWebService() {
      JsonReadTask task = new JsonReadTask();
      // passes values for the urls string array
      task.execute(new String[] { url });
     }

     // build hash set for list view
     public void display() {


      try {
       JSONObject jsonResponse = new JSONObject(jsonResult);
       JSONArray jsonMainNode = jsonResponse.optJSONArray("news_details");
       LinearLayout MainLL= (LinearLayout)getActivity().findViewById(R.id.newslayout); 
       //LinearLayout headLN=(LinearLayout)findViewById(R.id.headsection);

       for (int i = 0; i < jsonMainNode.length(); i++) {
           JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
            final String head = jsonChildNode.optString("title");
            final String details = jsonChildNode.optString("text");
            final String date = jsonChildNode.optString("date");
            final String image = jsonChildNode.optString("img");
         // final String time = jsonChildNode.optString("time");
         // ImageView img = new ImageView(this.getActivity());
         // new LoadImage().execute("http://192.168.2.7/crescentnews/images/"+image);
            new LoadImage().execute("http://192.168.2.7/crescentnews/images/"+image);

            TextView headln = new TextView(this.getActivity());
            headln.setText(head); // News Headlines
            headln.setTextSize(20);
            headln.setTextColor(Color.BLACK);
            headln.setGravity(Gravity.CENTER);
            headln.setBackgroundResource(R.drawable.menubg);
            headln.setPadding(10, 20, 10, 0);
            headln.setWidth(100);
            headln.setClickable(true);
            headln.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //Toast.makeText(getBaseContext(), head, Toast.LENGTH_SHORT).show();
                   Intent intent = new Intent(getActivity().getApplicationContext(),MainActivity.class);
                   intent.putExtra("head",head.toString());
                   intent.putExtra("details",details.toString());
                   intent.putExtra("date",date.toString());
                  // intent.putExtra("time",time.toString());
                   startActivity(intent);       
                }
            });

            ImageView photo=new ImageView(this.getActivity());
            //dateln.setBackgroundColor(Color.parseColor("#f20056"));
            photo.setBackgroundColor(Color.parseColor("#000000"));
            photo.setPadding(0, 0, 10, 10);
            photo.setClickable(true);

            TextView images = new TextView(this.getActivity());


            TextView dateln = new TextView(this.getActivity());
            dateln.setText(date); // News Headlines
            dateln.setTextSize(12);
            dateln.setTextColor(Color.BLACK);
            dateln.setGravity(Gravity.RIGHT);
            //dateln.setBackgroundColor(Color.parseColor("#f20056"));
            dateln.setBackgroundColor(0x00000000);
            dateln.setPadding(0, 0, 10, 10);
            dateln.setWidth(100);
            dateln.setClickable(true);
            dateln.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                     Intent intent = new Intent(getActivity().getApplicationContext(), MainActivity.class);
                       intent.putExtra("head",head.toString());
                       intent.putExtra("details",details.toString());
                       intent.putExtra("date",date.toString());
                      // intent.putExtra("time",time.toString());
                       startActivity(intent);         
                }
            });

            View sep=new View(this.getActivity());
            sep.setBackgroundColor(Color.parseColor("#252525"));
            sep.setMinimumHeight(10);

            TextView detailsln = new TextView(this.getActivity());
            detailsln.setText(details); // News Details
            detailsln.setTextSize(12);
            detailsln.setTextColor(Color.BLACK);
            detailsln.setGravity(Gravity.LEFT);
            detailsln.setPadding(10, 10, 10, 10);
            MainLL.addView(headln);
            MainLL.addView(dateln);
            MainLL.addView(photo);
            //MainLL.addView(img);
            MainLL.addView(detailsln);
            MainLL.addView(sep);


            detailsln.setClickable(true);
            detailsln.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                     Intent intent = new Intent(getActivity().getApplicationContext(), MainActivity.class);
                       intent.putExtra("head",head.toString());
                       intent.putExtra("details",details.toString());
                       intent.putExtra("date",date.toString());
                      // intent.putExtra("time",time.toString());
                       startActivity(intent);      
                }
            });

       }
      } catch (JSONException e) {
       Toast.makeText(getActivity().getApplicationContext(), "Error" + e.toString(),
         Toast.LENGTH_SHORT).show();
      }
       }

     private class LoadImage extends AsyncTask<String, String, Bitmap> {
            @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    pDialog = new ProgressDialog(getActivity());
                    pDialog.setMessage("Loading Image ....");
                    pDialog.show();

            }
               protected Bitmap doInBackground(String... args) {
                 try {
                       bitmap = BitmapFactory.decodeStream((InputStream)new URL(args[0]).getContent());
                } catch (Exception e) {
                      e.printStackTrace();
                }
              return bitmap;
               }
               protected void onPostExecute(Bitmap image) {
                 if(image != null){
                   //img.setImageBitmap(image);
                   pDialog.dismiss();
                 }else{
                   pDialog.dismiss();
                   Toast.makeText(getActivity(), "Image Does Not exist or Network Error", Toast.LENGTH_SHORT).show();
                 }
               }
           }
}

LOGCAT

 12-24 09:56:50.453: E/AndroidRuntime(2949): FATAL EXCEPTION: main
    12-24 09:56:50.453: E/AndroidRuntime(2949): java.lang.NullPointerException
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at info.paarva.slidingmenu.News_events$LoadImage.onPostExecute(News_events.java:266)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at info.paarva.slidingmenu.News_events$LoadImage.onPostExecute(News_events.java:1)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at android.os.AsyncTask.finish(AsyncTask.java:631)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at android.os.Handler.dispatchMessage(Handler.java:99)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at android.os.Looper.loop(Looper.java:137)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at android.app.ActivityThread.main(ActivityThread.java:5103)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at java.lang.reflect.Method.invokeNative(Native Method)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at java.lang.reflect.Method.invoke(Method.java:525)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    12-24 09:56:50.453: E/AndroidRuntime(2949):     at dalvik.system.NativeStart.main(Native Method)

Reply