首页 > 解决方案 > 添加(com.android.volley.Request) 在 RequestQueue 中不能应用于 (com.example.nikochan.instaticket.CearEventoRequest)

问题描述

此错误来自具有扩展类的主类,该类的目的是在 Hostinger 数据库中插入数据。下面是主类的代码:

package com.example.nikochan.instaticket;

import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

public class CrearEvento extends AppCompatActivity {


    public CrearEvento(int post, String loginRequestUrl, Response.Listener<String> listener, Object o) {
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crear_evento);

        final EditText etNombreEv = findViewById(R.id.etNombreEv);
        final EditText etFecha = findViewById(R.id.etFecha);
        final EditText etDescrpcion = findViewById(R.id.etDescripcion);
        final EditText etHora = findViewById(R.id.etHora);
        final EditText etGenero = findViewById(R.id.etGenero);
        final EditText etEdad = findViewById(R.id.etEdad);
        final EditText etDuracion = findViewById(R.id.etDuracion);
        final EditText etPrecio = findViewById(R.id.etPrecio);
        final Button bPublicar = findViewById(R.id.bPublicar);

        bPublicar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String nombreevento= etNombreEv.getText().toString();
                final String fecha= etFecha.getText().toString();
                final String descrpcion= etDescrpcion.getText().toString();
                final String hora= etHora.getText().toString();
                final String genero= etGenero.getText().toString();
                final int edad= Integer.parseInt(etEdad.getText().toString());
                final String duracion= etDuracion.getText().toString();
                final int precio= Integer.parseInt(etPrecio.getText().toString());


                Response.Listener<String> responseListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        try {
                            JSONObject jsonResponse = new JSONObject(response);
                            boolean success = jsonResponse.getBoolean("success");

                            if (success){
                                Intent intent = new Intent(CrearEvento.this, Menu.class);
                                CrearEvento.this.startActivity(intent);
                                finish();
                                }else {

                                AlertDialog.Builder builder= new AlertDialog.Builder(CrearEvento.this);

                                builder.setMessage("La creacion ha fallado");

                            }
                            } catch (JSONException e) {
                                e.printStackTrace();
                        }
                        }
                    };

                CrearEventoRequest CrearEventoRequest = new CrearEventoRequest(nombreevento, fecha, descrpcion, hora, genero, edad, duracion, precio, responseListener);
                RequestQueue queue = Volley.newRequestQueue(CrearEvento.this);
                queue.add(CrearEventoRequest);

            }
        });


}
}

这是扩展/连接类的代码:

package com.example.nikochan.instaticket;

import com.android.volley.Request;
import com.android.volley.Response;

import java.util.HashMap;
import java.util.Map;

public class CrearEventoRequest extends CrearEvento {
    private static final String LOGIN_REQUEST_URL = "http://instatickethome.xyz/Crea.php";
    private Map<String,String> params;

    public CrearEventoRequest (String nombreevento, String fecha, String descripcion, String hora, String genero, int edad, String duracion, int precio,
                               Response.Listener<String> listener){

        super (Request.Method.POST,LOGIN_REQUEST_URL,listener,null);
        params = new HashMap<>();
        params.put("nombreevento",nombreevento);
        params.put("fecha",fecha);
        params.put("descrpcion",descripcion);
        params.put("hora",hora);
        params.put("genero",genero);
        params.put("edad",edad + "");
        params.put("duracion",duracion);
        params.put("precio",precio + "");

        }

}

错误来自“queue.add(CrearEventoRequest);” 并且“错误”消息是:“RequestQueue 中的添加(com.android.volley.Request)不能应用于(com.example.nikochan.instaticket.CrearEventoRequest)”

如果有人知道问题出在哪里,请告诉我。

标签: javaandroidandroid-studio

解决方案


queue.add()方法需要一个类型为 的参数com.android.volley.Request,但您传递了一个CrearEventoRequest.

你可以尝试像这样进行演员阵容:

queue.add((Request)CrearEventoRequest);

如果仍然失败,您可以查看第三方库中是否有自定义请求类并使用它。


推荐阅读