2016-01-05 2 views
0

Я пытаюсь вызвать метод в приложении Android, когда я нажимаю кнопку, но приложение подавляет при вызове метода.вызов метода в приложении android

  BtnName.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      get_name_value(); 
     } 
    }); 

public void get_name_value(){ 

    int success; 
    String name = "paul"; 
    try { 
     List<NameValuePair> params1 = new ArrayList<NameValuePair>(); 
     params1.add(new BasicNameValuePair("name", name)); 

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

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

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

      // get first User object from JSON Array 
      final JSONObject product = UserObj.getJSONObject(0); 
      runOnUiThread(new Runnable() { 
       public void run() { 
        // User with this pid found 
        // Edit Text 
         txtName = (EditText) findViewById(R.id.accid); 
        // display User data in EditText 
        try { 
         txtName.setText(product.getString(TAG_VALUE)); 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      }); 

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

Ниже перечислены некоторые ошибки.

01-04 09:11:59.665: E/AndroidRuntime(579): FATAL EXCEPTION: main 
01-04 09:11:59.665: E/AndroidRuntime(579): java.lang.NullPointerException 
01-04 09:11:59.665: E/AndroidRuntime(579): at com.pule.ConCurrency.Concurency_main$5.run(Concurency_main.java:320) 
01-04 09:11:59.665: E/AndroidRuntime(579): at android.app.Activity.runOnUiThread(Activity.java:3717) 
01-04 09:11:59.665: E/AndroidRuntime(579): at com.pule.ConCurrency.Concurency_main.get_name_value(Concurency_main.java:313) 
+0

Можете ли вы разместить весь логарифм? –

+0

'NullPointerException' являются одним из наиболее часто встречающихся исключений, но также (как правило) довольно простым для исправления. [Этот пост поможет вам в отладке] (http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – PPartisan

ответ

0

Первая проблема заключается в том, что вы пытаетесь выполнить сетевую операцию в потоке пользовательского интерфейса. Вы должны поставить эту часть:

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

внутри AsyncTask.doInBackground, а позже код, который обновляет свой пользовательский интерфейс внутри AsyncTask.onPostExecute.

Вот хороший учебник с помощью makeHttpRequest для вас:

http://techlovejump.com/android-json-parser-from-url/

, как вы можете видеть, этот метод выполняется изнутри AsyncTask.

+0

кстати. из вашего кода, я полагаю, вы должны быть в порядке, если get_name_value(); будет выполняться изнутри AsyncTask – marcinj

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