-1

when i pressed on my login button the java.lang.NullPointerException occurs, it suppose to have data from database retrieved and put into array list i defined in the code . Anyone have idea how to solve this ? thanks in advance :D

package info.androidhive.materialdesign.activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;

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

import java.util.List;

import info.androidhive.materialdesign.R;

    enter code here

public class loginFragment extends Fragment {
    private TextView textViewForgotPass, textView2;
    private Button btnLogin;
    private EditText editTextEmail, editTextPassword;
    List<UserAccount> uaList;
    private ProgressDialog pDialog;
    private Context context;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_login, container, false);
        textViewForgotPass= (TextView)rootView.findViewById(R.id.textViewForgotPass);
        textViewForgotPass.setTextColor(0xAA81DEFD);
        editTextEmail = (EditText)rootView.findViewById(R.id.editTextEmail);
        editTextPassword = (EditText)rootView.findViewById(R.id.editTextPassword);
        btnLogin=(Button)rootView.findViewById(R.id.buttonLogin);
        btnLogin.setOnClickListener(loginListener);
        textViewForgotPass.setOnClickListener(forgotPassListener);
        pDialog = new ProgressDialog(loginFragment.this.getContext());
        textView2=(TextView)rootView.findViewById(R.id.textView2);
        return rootView;
    }

    View.OnClickListener loginListener = new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            readUser();

        }
    };

    View.OnClickListener forgotPassListener = new View.OnClickListener() {
        @Override
        public void onClick(final View v) {
            Toast.makeText(loginFragment.this.getContext(), "Forgot Password?", Toast.LENGTH_SHORT).show();
        }
    };

    private void readUser() {
        try {
            // Check availability of network connection.
            ConnectivityManager connMgr = (ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
            Boolean isConnected = networkInfo != null && networkInfo.isConnectedOrConnecting();
            if (isConnected) {
                //downloadUser().execute(getResources().getString(R.string.get_user_url));
                downloadUser(this.getActivity(), getResources().getString(R.string.get_user_url));
            } else {
                Toast.makeText(loginFragment.this.getContext(), "Network is NOT available",
                        Toast.LENGTH_SHORT).show();
            }
        } catch (Exception e) {
            Toast.makeText(loginFragment.this.getContext(),
                    "Error reading record:" + e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
    }

    private void downloadUser(Context context, String url) {
        //mPostCommentResponse.requestStarted();
        RequestQueue queue = Volley.newRequestQueue(context);

        JsonArrayRequest jsonObjectRequest = new JsonArrayRequest(url,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        if (!pDialog.isShowing())
                            pDialog.show();

                       try{
                            //Clear list
                            uaList.clear();

                            for(int i=0; i < response.length();i++){
                                JSONObject userAccResponse = (JSONObject) response.get(i);
                                String email = userAccResponse.getString("email");
                                String password = userAccResponse.getString("password");
                                String name = userAccResponse.getString("name");
                                String address = userAccResponse.getString("address");
                                String phonenum = userAccResponse.getString("phonenum");
                                UserAccount user = new UserAccount();
                                user.setEmail(email);
                                user.setPassword(password);
                                user.setName(name);
                                user.setAddress(address);
                                user.setPhoneNum(phonenum);
                                uaList.add(user);
                                textView2.setText(uaList.get(0).getEmail());
                            }

                            if (pDialog.isShowing())
                                pDialog.dismiss();

                        }catch (JSONException e){
                            Toast.makeText(loginFragment.this.getContext(), "Erroraaaa:" + e.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        Toast.makeText(loginFragment.this.getContext(), "Errorssss:" + volleyError.getMessage(), Toast.LENGTH_SHORT).show();
                        if (pDialog.isShowing())
                            pDialog.dismiss();
                    }
                });
        queue.add(jsonObjectRequest);
    }



}

This is the error logs

12-15 18:38:01.618  12060-12060/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at info.androidhive.materialdesign.activity.loginFragment$3.onResponse(loginFragment.java:107)
            at info.androidhive.materialdesign.activity.loginFragment$3.onResponse(loginFragment.java:99)
            at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
            at android.os.Handler.handleCallback(Handler.java:605)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:154)
            at android.app.ActivityThread.main(ActivityThread.java:4624)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
            at dalvik.system.NativeStart.main(Native Method)
ArK
  • 18,824
  • 63
  • 101
  • 135
Zhen Chua
  • 5
  • 4
  • `info.androidhive.materialdesign.activity.loginFragment` ... androidhive <= it explains every error in the code ... – Selvin Dec 15 '15 at 10:58
  • 1
    Possible duplicate of [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – Krease Dec 15 '15 at 16:19

1 Answers1

0

Your uaList is null and you're trying to clear it.

Initialise it first with uaList = new Arraylist<>();

MSpeed
  • 7,579
  • 6
  • 42
  • 54