Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php doInBackground、getText方法和makeHttpRequest方法出错_Php_Android_Mysql_Android Asynctask - Fatal编程技术网

Php doInBackground、getText方法和makeHttpRequest方法出错

Php doInBackground、getText方法和makeHttpRequest方法出错,php,android,mysql,android-asynctask,Php,Android,Mysql,Android Asynctask,我从中创建一个程序 我在这方面遇到了一些错误: protected String doInBackground(String... args) { String id = id_anggota.getText().toString(); String nama = nama_anggota.getText().toString(); String kelamin = jenis_kelamin.getText().toString();

我从中创建一个程序

我在这方面遇到了一些错误:

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);
我有两种错误:

在getText上,必须从UI线程调用方法id_anggota.getText。 无法解析makeHttpRequest上的方法。 我可以为这个问题做什么解决方案

更新:

我使用一些图书馆:

httpclient-android-4.3.3.jar httpcore-4.4.5.jar json-simple:json-simple:1.1 移动

在您的AsyncTask.execute之前。 将yourAsyncTask.execute更改为yourAsyncTask.executeid、nama、kelamin、kls、tanggal。 而在方法上则是做背景

protected String doInBackground(String... args) {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("id_anggota", args[0]));
    params.add(new BasicNameValuePair("nama_anggota", args[1]));
    params.add(new BasicNameValuePair("jenis_kelamin", args[2]));
    params.add(new BasicNameValuePair("kelas", args[3]));
    params.add(new BasicNameValuePair("tanggal_daftar", args[4]));
}
在AsyncTask中,请声明一些变量:

 private String id ;
 private String nama;
 private String kelamin ;
 private String kls;
 private String tanggal;
然后在onPreExecute上,您可以为它们设置值:

@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();
    }
最后,关于doInBackground:

makeHttpRequest可以在JSONParser类或

此getText与视图、TextView交互,android操作系统中的所有视图只能在UIUser界面线程中工作。doInBackground创建了一个单独的线程,一个名称所示的背景线程。因此,从TextView获取文本应该始终来自由android操作系统管理的UI线程。因此,将上述代码移动到运行在UI线程上的onPreExecute中


就makeHttpRequest而言,只需打开jar文件,看看它是否有makeHttpRequest。您可以在命令提示符下反编译jar文件

id\u anggota.getText应在onpreexecuted中调用。如果您给我一个示例,请SyncTask具有onPreExecute方法。它在执行doInBackground之前在UI线程上运行。所以当我移动String id=id\u anggota.getText.toString时,您可以将需要在UI线程上运行的一些代码移动到onpreExecute;若要继续执行,它将使无法解决params上的id。addnew BasicNameValuePairid_anggota,id;这是工作。非常感谢。你给我举个例子了吗?我不是这么说的。我刚才说检查jar是否包含makeHttpRequest方法。我提供了一个链接,可以查看jar中的所有方法。我不明白:|好的,告诉我一件事,代码中的jsonParser变量是什么。您在哪里声明了它?jsonParser我在MainActivity类中声明了它在您的问题中声明并使用jsonParserEdit您的答案与makeHttpRequest解决方案。所以你的回答可以帮助别人。谢谢你的帮助:D
@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();
    }
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));
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();