duanliang4009 2016-09-09 03:35
浏览 70
已采纳

doInBackground上的错误,方法getText和方法makeHttpRequest

I create a program from Android Hive

I get some error on this:

protected String doInBackground(String... args) {
        String id = id_anggota.getText().toString();
        String nama = nama_anggota.getText().toString();
        String kelamin = jenis_kelamin.getText().toString();
        String kls = kelas.getText().toString();
        String tanggal = tanggal_daftar.getText().toString();

        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("id_anggota", id));
        params.add(new BasicNameValuePair("nama_anggota", nama));
        params.add(new BasicNameValuePair("jenis_kelamin", kelamin));
        params.add(new BasicNameValuePair("kelas", kls));
        params.add(new BasicNameValuePair("tanggal_daftar", tanggal));

        JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                "POST", params);

I get 2 kind of error:

  1. On getText method id_anggota.getText() must be called from the UI Thread.
  2. On makeHttpRequest method cannot resolved.

What solutions can I do for this problem?

Update:

I use some library:

  1. httpclient-android-4.3.3.jar
  2. httpcore-4.4.5.jar
  3. com.googlecode.json-simple:json-simple:1.1
  • 写回答

3条回答 默认 最新

  • dongsheng1698 2016-09-09 04:42
    关注

    Inside your AsyncTask please declare some variables:

     private String id ;
     private String nama;
     private String kelamin ;
     private String kls;
     private String tanggal;
    

    Then on onPreExecute() you can set values for them:

    @Override
        protected void onPreExecute(Void result) {
            super.onPostExecute(result);
            id = id_anggota.getText().toString();
            nama = nama_anggota.getText().toString();
            kelamin = jenis_kelamin.getText().toString();
            kls = kelas.getText().toString();
            tanggal = tanggal_daftar.getText().toString();
        }
    

    Finally on doInBackground():

    protected String doInBackground(String... args) {
    
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("id_anggota", id));
        params.add(new BasicNameValuePair("nama_anggota", nama));
        params.add(new BasicNameValuePair("jenis_kelamin", kelamin));
        params.add(new BasicNameValuePair("kelas", kls));
        params.add(new BasicNameValuePair("tanggal_daftar", tanggal));
    

    makeHttpRequest can be found in JSONParser class here or here

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么