Ошибка на progressDialog и Toast с нестандартным файлом адаптера для повторного просмотра - PullRequest
0 голосов
/ 19 апреля 2020

Мне нужна помощь для показа тоста и диалогового окна прогресса в запросе залпа, и я использую специальный файл адаптера, когда нажатие на карту отправит данные с залпом, пожалуйста, предоставьте лучший поток или исправьте этот код.

это мой onBindViewHolder внутри файла адаптера

@Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        final DataPicking task = taskList.get(position);
        holder.numberid.setText(task.getNomorid());
        holder.nama.setText(task.getNamakonsumen());
        holder.rate.setText(task.getRate());
        holder.tanggal.setText(task.getTanggal());
        holder.salesman.setText(task.getSalesman());

        holder.cardList.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View view) {
                new AlertDialog.Builder(view.getContext())
                .setTitle("Proses Picking")
                .setMessage("Apakah kamu yakin ingin memproses picking data ini?")
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        String nomorid = taskList.get(position).getNomorid();
                        PickingActivity picking = new PickingActivity();
                        picking.kirimData(nomorid);               
                    }})
                .setNegativeButton(android.R.string.no, null).show();
            }
        });
    }

и это функция kirimData для отправки данных с залпом

public void kirimData(final String nomorid){

        // Log.e("ini kirimdata ",nomorid);
        // Tag used to cancel the request
        String tag_string_req = "req_login";

        pDialog.setMessage("Loading ...");
        showDialog();

        StringRequest strReq = new StringRequest(Request.Method.POST,
                Constants.URL_SET_PICKING, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "Picking Response: " + response.toString());
                //hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    Log.e(TAG, "obj: " + jObj.toString());
                    String error = jObj.getString("status");
                    Log.e(TAG, "obj: " + error);
                    // Check for error node in json
                    if (error.equals("1")) {
                        // user successfully logged in
                        // Create login session
                        mAdapter.notifyDataSetChanged();
                    } else {
                        // Error in login. Get the error message
                        String errorMsg = jObj.getString("message");
                        Toast.makeText(getApplicationContext(),
                                errorMsg, Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    // JSON error
                    e.printStackTrace();
                    Toast.makeText(getBaseContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                /*Intent intent = new Intent(LoginActivity.this,
                        MainActivity.class);
                startActivity(intent);
                finish();*/
                Log.e(TAG, "Proses Picking Error: " + error.getMessage());
                Toast.makeText(getApplicationContext(),
                        "Proses Picking Failed", Toast.LENGTH_LONG).show();
                hideDialog();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting parameters to login url
                Map<String, String> params = new HashMap<String, String>();
                params.put("nomorid", nomorid);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);

    }

и это журнал ошибок

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ProgressDialog.setMessage(java.lang.CharSequence)' on a null object reference
        at com.sip.gotrack.PickingActivity.kirimData(PickingActivity.java:167)
        at com.sip.gotrack.PickingAdapter$1$1.onClick(PickingAdapter.java:69)

, пожалуйста, помогите мне за эту ошибку

1 Ответ

0 голосов
/ 19 апреля 2020

Где ваша pDialog инициализируется?

Внутри kirimData инициализируйте pDialog, как это в начале.

pDialog = new ProgressDialog(context);

Кажется, pDialog не инициализируется до вызова этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...