0

これは、JSON を使用して MYSQL からデータを JSONArray に取得しようとするクラスです。

画面に 2 つのトーストが表示されます。NullPointerEception と、php webpage にあるすべてのものを単語ごとに書き込む別の例外です。

public class ConnectMySql extends Activity{
InputStream is;
//List<String> items;
JSONArray jArray;
//String[] items;
StringBuilder sb;
//ListView list;
TextView textv;
    String result;
//List<NameValuePair> items;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
//list = (ListView) findViewById(R.id.listview);

textv = (TextView) findViewById(R.id.tvHI);
setContentView(R.layout.main);

try{
    HttpClient httpsClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("http://79.114.48.119/data.php");

    List<NameValuePair> nameValue = new ArrayList<NameValuePair>();
    httpPost.setEntity(new UrlEncodedFormEntity(nameValue));
    HttpResponse httpResponse = httpsClient.execute(httpPost);
    HttpEntity httpEntity = httpResponse.getEntity();
    is = httpEntity.getContent();
}catch(Exception e){
    Log.e("log_tag", "Error in HTTP connection" + e.toString());
    Toast.makeText(this, "http connection error: " + e.toString(), Toast.LENGTH_LONG).show();
}
    try{
        BufferedReader BufR = new BufferedReader (new InputStreamReader(is, "iso-8859-1"),8);
        sb = new StringBuilder();
        sb.append(BufR.readLine() + "\n");
        String line = "0";

        while((line = BufR.readLine()) != null){
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
    }catch(Exception e){
        Log.e("log_tag", "Error in convert String" + e.toString());
    }
    int lat;
    int lon;
    try{
        jArray = new JSONArray(result);
        Toast.makeText(this, "no data found" + result, Toast.LENGTH_LONG).show();
        JSONObject json_data = null;
        for(int i = 0; i< jArray.length(); i++){
            json_data = jArray.getJSONObject(i);
            lat  = json_data.getInt("latitude");
            lon = json_data.getInt("longitude");

            textv.setText(lat + lon);

            //Here i use another function whitch uses lat & lon
        }
        //setupList();
    }catch(JSONException e){
        Toast.makeText(this, "no data found", Toast.LENGTH_LONG).show();
    }catch(Exception e){
        Toast.makeText(this, "error" + e.toString(), Toast.LENGTH_LONG).show();
    }
}
}
/*private void setupList() {

// TODO Auto-generated method stub
list.setAdapter(new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1, items));
}

}*/

私たちを手伝ってくれますか ?どうもありがとうございました !

4

1 に答える 1

1

コードのいくつかの間違い:

1)setContentView()は、findViewById()、またはxmlレイアウト参照を使用するその他のメソッドの前に呼び出す必要があります。

2)UIスレッドでネットワーク操作を実行しようとしています(httpリクエストは別のスレッドから実行する必要があります-そうでない場合-例外がスローされます)

必要なことを忘れた、または知らなかった場合は、マニフェストインターネット許可に追加することを忘れないでください

于 2012-05-11T16:19:39.140 に答える