2013-03-23 2 views
0

Я написал код в java в eclipse, который может позволить мне создать продукт в локальной базе данных .. на самом деле он работает, но когда он закончил, приложение потерпело крах, и если я иду в свою базу данных, я могу см. продукт, созданный Может ли кто-нибудь помочь мне в этом?андроидная регистрационная форма разбилась

public class MainActivity 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 = "http://10.0.2.2/android_connect/create_product.php" ; 

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



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

// 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(); 
      } 
     }); 

} 

class CreateNewProduct extends AsyncTask<String, String, String> { 

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



    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 
       Toast.makeText(getBaseContext(), "Succes!", Toast.LENGTH_SHORT).show(); 

       // 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(); 
    } 

} 

}

+1

Вы говорите нам, что он разбился, но вы не говорите нам, что такое авария, или покажите нам логарифм. Как мы должны догадываться? – Simon

+0

трассировка стека ошибок дала бы лучшую информацию о сбое. Итак, можем ли мы иметь логарифм? – SudoRahul

+0

возможно, вы получаете это исключение 'CalledFromWrongThreadException: только исходный поток, который создал иерархию представлений ...', потому что вы пытаетесь показать Toast и получить доступ к элементам Ui внутри doInBackground –

ответ

0

Перемещение этой линии

 Toast.makeText(getBaseContext(), "Succes!", Toast.LENGTH_SHORT).show(); 

к вашему onPostExecute() метод.

+0

thank u man, его работа очень хорошо – Charbel

+0

, но у меня есть вопрос, когда он показывает мне успех messg, приложение закрылось ... как я могу это сделать, когда он показывает мне messg приложение переходит на другую страницу в моем проекте приложения? – Charbel

+0

Задайте другой вопрос. Комментарии не являются местом для распространения вопросов и ответов. Кроме того, диалоги являются злыми. :) –

Смежные вопросы