2013-12-10 2 views
-2

이 오류는 무엇이고 왜 발생합니까? 설명하고 해결하십시오. 이것은 "androidhive"의 샘플입니다. 내 논문 때문에 안드로이드 앱이 웹 서버에 데이터를 저장하는 것이므로 내 논문에 대한 도움이 필요합니다.android error "창 관리자 오류"

12-10 10:08:09.556: W/System.err(401): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused 
12-10 10:08:09.556: W/System.err(401): org.apache.http.conn.HttpHostConnectException: Connection to http://localhost refused 
12-10 10:08:09.686: W/System.err(401): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178) 
12-10 10:08:10.066: E/Buffer Error(401): Error converting result java.lang.NullPointerException 
12-10 10:08:10.086: E/JSON Parser(401): Error parsing data org.json.JSONException: End of input at character 0 of 
12-10 10:08:10.086: W/dalvikvm(401): threadid=9: thread exiting with uncaught exception (group=0x40015560) 
12-10 10:08:10.096: E/AndroidRuntime(401): FATAL EXCEPTION: AsyncTask #1 
12-10 10:08:10.096: E/AndroidRuntime(401): java.lang.RuntimeException: An error occured while executing doInBackground() 
12-10 10:08:10.096: E/AndroidRuntime(401): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.lang.Thread.run(Thread.java:1019) 
12-10 10:08:10.096: E/AndroidRuntime(401): Caused by: java.lang.NullPointerException 
12-10 10:08:10.096: E/AndroidRuntime(401): at com.example.androidconnect.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:131) 
12-10 10:08:10.096: E/AndroidRuntime(401): at com.example.androidconnect.AllProductsActivity$LoadAllProducts.doInBackground(AllProductsActivity.java:1) 
12-10 10:08:10.096: E/AndroidRuntime(401): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
12-10 10:08:10.096: E/AndroidRuntime(401): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
12-10 10:08:10.096: E/AndroidRuntime(401): ... 4 more 
12-10 10:08:10.786: E/WindowManager(401): Activity com.example.androidconnect.AllProductsActivity has leaked window [email protected] that was originally added here 
12-10 10:08:10.786: E/WindowManager(401): android.view.WindowLeaked: Activity com.example.androidconnect.AllProductsActivity has leaked window [email protected] that was originally added here 
12-10 10:08:10.786: E/WindowManager(401): at android.view.ViewRoot.<init>(ViewRoot.java:258) 
12-10 10:08:10.786: E/WindowManager(401): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
12-10 10:08:10.786: E/WindowManager(401): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
12-10 10:08:10.786: E/WindowManager(401): at android.view.Window$LocalWindowManager.addView(Window.java:424) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.Dialog.show(Dialog.java:241) 
12-10 10:08:10.786: E/WindowManager(401): at com.example.androidconnect.AllProductsActivity$LoadAllProducts.onPreExecute(AllProductsActivity.java:117) 
12-10 10:08:10.786: E/WindowManager(401): at android.os.AsyncTask.execute(AsyncTask.java:391) 
12-10 10:08:10.786: E/WindowManager(401): at com.example.androidconnect.AllProductsActivity.onCreate(AllProductsActivity.java:57) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
12-10 10:08:10.786: E/WindowManager(401): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-10 10:08:10.786: E/WindowManager(401): at android.os.Looper.loop(Looper.java:123) 
12-10 10:08:10.786: E/WindowManager(401): at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-10 10:08:10.786: E/WindowManager(401): at java.lang.reflect.Method.invokeNative(Native Method) 
12-10 10:08:10.786: E/WindowManager(401): at java.lang.reflect.Method.invoke(Method.java:507) 
12-10 10:08:10.786: E/WindowManager(401): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-10 10:08:10.786: E/WindowManager(401): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-10 10:08:10.786: E/WindowManager(401): at dalvik.system.NativeStart.main(Native Method) 
12-10 10:08:12.106: I/Process(401): Sending signal. PID: 401 SIG: 9 

도움 저 입력하고 "http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/"

MainScreenActivity.java

package com.example.androidconnect; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.View; 
import android.widget.Button; 
public class MainScreenActivity extends Activity { 

Button btnViewProducts; 
Button btnNewProduct; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_screen); 

    // Buttons 
    btnViewProducts = (Button) findViewById(R.id.btnViewProducts); 
    btnNewProduct = (Button) findViewById(R.id.btnCreateProduct); 

    // view products click event 
    btnViewProducts.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      // Launching All products Activity 
      Intent i = new Intent(getApplicationContext(), AllProductsActivity.class); 
      startActivity(i); 

     } 
    }); 

    // view products click event 
    btnNewProduct.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      // Launching create new product activity 
      Intent i = new Intent(getApplicationContext(), NewProductActivity.class); 
      startActivity(i); 

     } 
    }); 
}} 

AllPrductsActivity.java

package com.example.androidconnect; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
public class AllProductsActivity extends ListActivity { 

// Progress Dialog 
private ProgressDialog pDialog; 

// Creating JSON Parser object 
JSONParser jParser = new JSONParser(); 

ArrayList<HashMap<String, String>> productsList; 

// url to get all products list 
private static String url_all_products = "http://localhost/android_connect/get_all_products.php"; 

// JSON Node names 
private static final String TAG_SUCCESS = "success"; 
private static final String TAG_PRODUCTS = "products"; 
private static final String TAG_PID = "pid"; 
private static final String TAG_NAME = "name"; 

// products JSONArray 
JSONArray products = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.all_products); 

    // Hashmap for ListView 
    productsList = new ArrayList<HashMap<String, String>>(); 

    // Loading products in Background Thread 
    new LoadAllProducts().execute(); 

    // Get listview 
    ListView lv = getListView(); 

    // on seleting single product 
    // launching Edit Product Screen 
    lv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // getting values from selected ListItem 
      String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
        .toString(); 

      // Starting new intent 
      Intent in = new Intent(getApplicationContext(), 
        EditProductActivity.class); 
      // sending pid to next activity 
      in.putExtra(TAG_PID, pid); 

      // starting new activity and expecting some response back 
      startActivityForResult(in, 100); 
     } 
    }); 

} 

// Response from Edit Product Activity 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    // if result code 100 
    if (resultCode == 100) { 
     // if result code 100 is received 
     // means user edited/deleted product 
     // reload this screen again 
     Intent intent = getIntent(); 
     finish(); 
     startActivity(intent); 
    } 

} 

/** 
* Background Async Task to Load all product by making HTTP Request 
* */ 
class LoadAllProducts extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(AllProductsActivity.this); 
     pDialog.setMessage("Loading products. Please wait..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     pDialog.show(); 
    } 

    /** 
    * getting All products from url 
    * */ 
    protected String doInBackground(String... args) { 
     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     // getting JSON string from URL 
     JSONObject json = jParser.makeHttpRequest(url_all_products, "GET", 
       params); 

     // Check your log cat for JSON reponse 
     Log.d("All Products: ", json.toString()); 

     try { 
      // Checking for SUCCESS TAG 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       // products found 
       // Getting Array of Products 
       products = json.getJSONArray(TAG_PRODUCTS); 

       // looping through All Products 
       for (int i = 0; i < products.length(); i++) { 
        JSONObject c = products.getJSONObject(i); 

        // Storing each json item in variable 
        String id = c.getString(TAG_PID); 
        String name = c.getString(TAG_NAME); 

        // creating new HashMap 
        HashMap<String, String> map = new HashMap<String, String>(); 

        // adding each child node to HashMap key => value 
        map.put(TAG_PID, id); 
        map.put(TAG_NAME, name); 

        // adding HashList to ArrayList 
        productsList.add(map); 
       } 
      } else { 
       // no products found 
       // Launch Add New product Activity 
       Intent i = new Intent(getApplicationContext(), 
         NewProductActivity.class); 
       // Closing all previous activities 
       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog after getting all products 
     pDialog.dismiss(); 
     // updating UI from Background Thread 
     runOnUiThread(new Runnable() { 
      public void run() { 
       /** 
       * Updating parsed JSON data into ListView 
       * */ 
       ListAdapter adapter = new SimpleAdapter(
         AllProductsActivity.this, productsList, 
         R.layout.list_item, new String[] { TAG_PID, 
           TAG_NAME }, 
         new int[] { R.id.pid, R.id.name }); 
       // updating listview 
       setListAdapter(adapter); 
      } 
     }); 

    } 

}}

에서 샘플 코드 NewProductActivity.java

package com.example.androidconnect; 
import java.util.ArrayList; 
import java.util.List; 
import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
public class NewProductActivity extends Activity { 

// Progress Dialog 
private ProgressDialog pDialog; 

JSONParser jsonParser = new JSONParser(); 
EditText inputName; 
EditText inputPrice; 
EditText inputDesc; 

// url to create new product 
private static String url_create_product = "localhost/android_connect/create_product.php"; 

// JSON Node names 
private static final String TAG_SUCCESS = "success"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.add_product); 

    // Edit Text 
    inputName = (EditText) findViewById(R.id.inputName); 
    inputPrice = (EditText) findViewById(R.id.inputPrice); 
    inputDesc = (EditText) findViewById(R.id.inputDesc); 

    // Create button 
    Button btnCreateProduct = (Button) findViewById(R.id.btnCreateProduct); 

    // button click event 
    btnCreateProduct.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      // creating new product in background thread 
      new CreateNewProduct().execute(); 
     } 
    }); 
} 

/** 
* Background Async Task to Create new product 
* */ 
class CreateNewProduct extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(NewProductActivity.this); 
     pDialog.setMessage("Creating Product.."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    /** 
    * Creating product 
    * */ 
    protected String doInBackground(String... args) { 
     String name = inputName.getText().toString(); 
     String price = inputPrice.getText().toString(); 
     String description = inputDesc.getText().toString(); 

     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("name", name)); 
     params.add(new BasicNameValuePair("price", price)); 
     params.add(new BasicNameValuePair("description", description)); 

     // getting JSON Object 
     // Note that create product url accepts POST method 
     JSONObject json = jsonParser.makeHttpRequest(url_create_product, 
       "POST", params); 

     // check log cat fro response 
     Log.d("Create Response", json.toString()); 

     // check for success tag 
     try { 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       // successfully created product 
       Intent i = new Intent(getApplicationContext(), 
         AllProductsActivity.class); 
       startActivity(i); 

       // closing this screen 
       finish(); 
      } else { 
       // failed to create product 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once done 
     pDialog.dismiss(); 
    } 

}} 

EditProductActivity.java

package com.example.androidconnect; 
import java.util.ArrayList; 
import java.util.List; 
import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
public class EditProductActivity extends Activity { 

EditText txtName; 
EditText txtPrice; 
EditText txtDesc; 
EditText txtCreatedAt; 
Button btnSave; 
Button btnDelete; 

String pid; 

// Progress Dialog 
private ProgressDialog pDialog; 

// JSON parser class 
JSONParser jsonParser = new JSONParser(); 

// single product url 
private static final String url_product_detials = "localhost/android_connect/get_all_products.php"; 

// url to update product 
private static final String url_update_product = "localhost/android_connect/update_product.php"; 

// url to delete product 
private static final String url_delete_product = "localhost/android_connect/delete_product.php"; 

// JSON Node names 
private static final String TAG_SUCCESS = "success"; 
private static final String TAG_PRODUCT = "product"; 
private static final String TAG_PID = "pid"; 
private static final String TAG_NAME = "name"; 
private static final String TAG_PRICE = "price"; 
private static final String TAG_DESCRIPTION = "description"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.edit_product); 

    // save button 
    btnSave = (Button) findViewById(R.id.btnSave); 
    btnDelete = (Button) findViewById(R.id.btnDelete); 

    // getting product details from intent 
    Intent i = getIntent(); 

    // getting product id (pid) from intent 
    pid = i.getStringExtra(TAG_PID); 

    // Getting complete product details in background thread 
    new GetProductDetails().execute(); 

    // save button click event 
    btnSave.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // starting background task to update product 
      new SaveProductDetails().execute(); 
     } 
    }); 

    // Delete button click event 
    btnDelete.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // deleting product in background thread 
      new DeleteProduct().execute(); 
     } 
    }); 

} 

/** 
* Background Async Task to Get complete product details 
* */ 
class GetProductDetails extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(EditProductActivity.this); 
     pDialog.setMessage("Loading product details. Please wait..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    /** 
    * Getting product details in background thread 
    * */ 
    protected String doInBackground(String... params) { 

     // updating UI from Background Thread 
     runOnUiThread(new Runnable() { 
      public void run() { 
       // Check for success tag 
       int success; 
       try { 
        // Building Parameters 
        List<NameValuePair> params = new ArrayList<NameValuePair>(); 
        params.add(new BasicNameValuePair("pid", pid)); 

        // getting product details by making HTTP request 
        // Note that product details url will use GET request 
        JSONObject json = jsonParser.makeHttpRequest(
          url_product_detials, "GET", params); 

        // check your log for json response 
        Log.d("Single Product Details", json.toString()); 

        // json success tag 
        success = json.getInt(TAG_SUCCESS); 
        if (success == 1) { 
         // successfully received product details 
         JSONArray productObj = json 
           .getJSONArray(TAG_PRODUCT); // JSON Array 

         // get first product object from JSON Array 
         JSONObject product = productObj.getJSONObject(0); 

         // product with this pid found 
         // Edit Text 
         txtName = (EditText) findViewById(R.id.inputName); 
         txtPrice = (EditText) findViewById(R.id.inputPrice); 
         txtDesc = (EditText) findViewById(R.id.inputDesc); 

         // display product data in EditText 
         txtName.setText(product.getString(TAG_NAME)); 
         txtPrice.setText(product.getString(TAG_PRICE)); 
         txtDesc.setText(product.getString(TAG_DESCRIPTION)); 

        } else { 
         // product with pid not found 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 

     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once got all details 
     pDialog.dismiss(); 
    } 
} 

/** 
* Background Async Task to Save product Details 
* */ 
class SaveProductDetails extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(EditProductActivity.this); 
     pDialog.setMessage("Saving product ..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    /** 
    * Saving product 
    * */ 
    protected String doInBackground(String... args) { 

     // getting updated data from EditTexts 
     String name = txtName.getText().toString(); 
     String price = txtPrice.getText().toString(); 
     String description = txtDesc.getText().toString(); 

     // Building Parameters 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair(TAG_PID, pid)); 
     params.add(new BasicNameValuePair(TAG_NAME, name)); 
     params.add(new BasicNameValuePair(TAG_PRICE, price)); 
     params.add(new BasicNameValuePair(TAG_DESCRIPTION, description)); 

     // sending modified data through http request 
     // Notice that update product url accepts POST method 
     JSONObject json = jsonParser.makeHttpRequest(url_update_product, 
       "POST", params); 

     // check json success tag 
     try { 
      int success = json.getInt(TAG_SUCCESS); 

      if (success == 1) { 
       // successfully updated 
       Intent i = getIntent(); 
       // send result code 100 to notify about product update 
       setResult(100, i); 
       finish(); 
      } else { 
       // failed to update product 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once product uupdated 
     pDialog.dismiss(); 
    } 
} 

/***************************************************************** 
* Background Async Task to Delete Product 
* */ 
class DeleteProduct extends AsyncTask<String, String, String> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(EditProductActivity.this); 
     pDialog.setMessage("Deleting Product..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    /** 
    * Deleting product 
    * */ 
    protected String doInBackground(String... args) { 

     // Check for success tag 
     int success; 
     try { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("pid", pid)); 

      // getting product details by making HTTP request 
      JSONObject json = jsonParser.makeHttpRequest(
        url_delete_product, "POST", params); 

      // check your log for json response 
      Log.d("Delete Product", json.toString()); 

      // json success tag 
      success = json.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       // product successfully deleted 
       // notify previous activity by sending code 100 
       Intent i = getIntent(); 
       // send result code 100 to notify about product deletion 
       setResult(100, i); 
       finish(); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(String file_url) { 
     // dismiss the dialog once product deleted 
     pDialog.dismiss(); 

    } 

}} 

JSONParser.java

package com.example.androidconnect; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.List; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.utils.URLEncodedUtils; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.util.Log; 
public class JSONParser { 

static InputStream is = null; 
static JSONObject jObj = null; 
static String json = ""; 

// constructor 
public JSONParser() { 

} 

// function get json from url 
// by making HTTP POST or GET mehtod 
public JSONObject makeHttpRequest(String url, String method, 
     List<NameValuePair> params) { 

    // Making HTTP request 
    try { 

     // check for request method 
     if (method == "POST") { 
      // request method is POST 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     } else if (method == "GET") { 
      // request method is GET 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      String paramString = URLEncodedUtils.format(params, "utf-8"); 
      url += "?" + paramString; 
      HttpGet httpGet = new HttpGet(url); 

      HttpResponse httpResponse = httpClient.execute(httpGet); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 
     } 

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    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(); 
     json = sb.toString(); 
    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

    // try parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 

    // return JSON String 
    return jObj; 

}} 
+0

을보십시오. 오류가 발생하는 코드를 게시하십시오 ... –

+0

코드를 게시하십시오 .. – Coderji

+0

@ user3085308 왜 사용자 프로필 링크를 게시하고 있습니까? 사용자에게 인증을 원한다면'@ username' 구문을 사용하십시오. 팁 : 직접 질문을해도 아무도 대답 할 의무가 없습니다. –

답변

0

당신은 UI 요소 그롬 배경 스레드에 액세스하려고이 방법

class GetProductDetails extends AsyncTask<String, String, JSONArray> { 

    /** 
    * Before starting background thread Show Progress Dialog 
    * */ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(EditProductActivity.this); 
     pDialog.setMessage("Loading product details. Please wait..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    /** 
    * Getting product details in background thread 
    * */ 
    protected JSONArray doInBackground(String... params) { 

     // updating UI from Background Thread 

     // Check for success tag 
     int success; 
     try { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      params.add(new BasicNameValuePair("pid", pid)); 

      // getting product details by making HTTP request 
      // Note that product details url will use GET request 
      JSONObject json = jsonParser.makeHttpRequest(url_product_detials, "GET", params); 

      // check your log for json response 
      Log.d("Single Product Details", json.toString()); 

      // json success tag 
      success = json.getInt(TAG_SUCCESS); 
      if (success == 1) { 
       // successfully received product details 
       JSONArray productObj = json.getJSONArray(TAG_PRODUCT); // JSON 
                     // Array 
       return productObj; 


      } else { 
       // product with pid not found 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    /** 
    * After completing background task Dismiss the progress dialog 
    * **/ 
    protected void onPostExecute(JSONArray productObj) { 
     // dismiss the dialog once got all details 
     JSONObject product = productObj.getJSONObject(0); 

     txtName = (EditText) findViewById(R.id.inputName); 
     txtPrice = (EditText) findViewById(R.id.inputPrice); 
     txtDesc = (EditText) findViewById(R.id.inputDesc); 

     // display product data in EditText 
     txtName.setText(product.getString(TAG_NAME)); 
     txtPrice.setText(product.getString(TAG_PRICE)); 
     txtDesc.setText(product.getString(TAG_DESCRIPTION)); 

     pDialog.dismiss(); 
    } 
} 
+0

"보호 된 JSONArray doInBackground (문자열 ... 매개 변수)"줄에서 – ThihaKyaw

+0

오류가 발생했습니다. "보호 된 JSONArray doInBackground (문자열 ... 매개 변수)" "List params = new ArrayList (); " @Biraj Zalavadia 라인 – ThihaKyaw