onClick无法正常工作

时间:2014-02-10 16:13:00

标签: android database post

这是我的班级。在OnClick方法中,我试图将数据发布到远程数据库,但没有任何事情发生。我完全不知道为什么。没有错误,没有行动。根本不值一提。欢迎任何答案。请帮忙。

public class Wyslij extends Activity {

protected static final int TIMEOUT_MILLISEC = 5000;

ImageButton ib_wyslij;
int suma_zam;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.wyslij);


    ib_wyslij = (ImageButton) findViewById(R.id.ib_wyslij);

    final Zamowienie zam = new Zamowienie();



    String suma_zamowienia = podaj_sume(TowarZamowienie.towary_zamowione);
    if(suma_zamowienia != null && !suma_zamowienia.equalsIgnoreCase("")){

    suma_zam = Integer.parseInt(suma_zamowienia);
        zam.suma=suma_zam;}

    zam.suma=suma_zam;


    TowarZamowienie tz = new TowarZamowienie();

    ib_wyslij.setOnClickListener(new OnClickListener() {

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


            try {
                JSONObject json = new JSONObject();
                json.put("Zam_suma", zam.getSuma());

                HttpParams httpParams = new BasicHttpParams();
                HttpConnectionParams.setConnectionTimeout(httpParams,
                        TIMEOUT_MILLISEC);
                HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
                HttpClient client = new DefaultHttpClient(httpParams);
                //
                //String url = "http://10.0.2.2:8080/sample1/webservice2.php?" + 
                //             "json={\"UserName\":1,\"FullName\":2}";
                String url = "http://www.msinzynierka.cba.pl/executeConn.php";

                HttpPost request = new HttpPost(url);
                request.setEntity(new ByteArrayEntity(json.toString().getBytes(
                        "UTF8")));
                request.setHeader("json", json.toString());
                HttpResponse response = client.execute(request);
                HttpEntity entity = response.getEntity();
                // If the response does not enclose an entity, there is no need

            } catch (Throwable t) {

            }
            //sendAccelerationData(zam);

        }
});

}

private String podaj_sume(ArrayList<Towar> l) {
    int suma = 0;
    String s = null;
    for (int i = 0; i < l.size(); i++) {
        suma += l.get(i).Tow_ilosc * l.get(i).Tow_cena;
    }

    return s = String.valueOf(suma);
}
}

1 个答案:

答案 0 :(得分:2)

不要捕获一般异常并且不打印它 - 这样,如果发生异常,您将不会得到任何提示。只需将throwable更改为exception并调用yourException.printStacktrace();

我敢打赌,你得到的例外是NetworkingOnMainThreadException。网络操作往往需要一些时间,这就是为什么禁止在Android的主(ui)线程上执行此类操作的原因。这会使UI无响应,从而导致非常糟糕的用户体验。

查看AsyncTask以便将操作优雅地移动到后台线程。