0

I try to make an registertion app but is not work , and this is my code ,,what is wrong??

Error log:

E/OpenGLRenderer: SFEffectCache:clear(), mSize = 0
                W/Adreno-ES20: <core_glDeleteShader:170>: GL_INVALID_VALUE
                W/art: Suspending all threads took: 8.083ms
                E/WindowManager: android.view.WindowLeaked: Activity                         com.example.phonebook.MainActivity has leaked window c com.android.internal.policy.impl.PhoneWindow$DecorView{2141305d V.E..... R......D 0,0-501,144} that was originally added here
                     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:371)
                     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:261)
                     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
                     at android.app.Dialog.show(Dialog.java:298)
                     at com.example.phonebook.MainActivity$loginAccess.onPreExecute(MainActivity.java:118)
                     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
                     at android.os.AsyncTask.execute(AsyncTask.java:535)
                     at com.example.phonebook.MainActivity$2.onClick(MainActivity.java:89)
                     at android.view.View.performClick(View.java:5052)
                     at android.view.View$PerformClick.run(View.java:20162)
                     at android.os.Handler.handleCallback(Handler.java:739)
                     at android.os.Handler.dispatchMessage(Handler.java:95)
                     at android.os.Looper.loop(Looper.java:135)
                     at android.app.ActivityThread.main(ActivityThread.java:5753)
                     at java.lang.reflect.Method.invoke(Native Method)
                     at java.lang.reflect.Method.invoke(Method.java:372)
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

Signin1.java

p

ublic class Signin1 extends Activity implements OnItemSelectedListener {
    Button login, signin;
    public String item;
    public String gender;
    private RadioGroup rg1;
    private RadioButton rd1, rd2;

    // private DatePicker datePicker;


    //private Calendar calendar;
    // private int year, month, day;


    private EditText first_name, last_name, mobile_number, password, email_id, hint, conpassword;
    private ProgressDialog pDialog;
    int flag = 0;

    JSONParser jsonParser = new JSONParser();
    private static String url = "http://192.168.1.7/blood/register.php";
    private static final String TAG_SUCCESS = "success";



    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub

    }


    public void onItemSelected(AdapterView<?> parent, View view,
                               int position, long id) {
        item=parent.getItemAtPosition(position).toString();
        // TODO Auto-generated method stub

    }
    public void onStart() {
        super.onStart();
        EditText txtDate=(EditText)findViewById(R.id.txtdate);
        txtDate.setOnFocusChangeListener(new View.OnFocusChangeListener() {


            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // TODO Auto-generated method stub
                if (hasFocus) {
                    DateDialog dialog=new DateDialog(v);
                    FragmentTransaction ft=getFragmentManager().beginTransaction();
                    dialog.show(ft, "DatePicker");



                }
            }
        });
    }

    protected void onCreate(Bundle savedInstanceState) {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                .detectDiskReads().detectDiskWrites().detectNetwork()
                .penaltyLog().build());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signin1);

        login = (Button) findViewById(R.id.login);
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);

            }
        });
        Spinner spinner = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.blood, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
        signin = (Button) findViewById(R.id.signin);
        first_name = (EditText) findViewById(R.id.editText2);
        last_name = (EditText) findViewById(R.id.editText1);
        rg1 = (RadioGroup) findViewById(R.id.rg11);
        rd1 = (RadioButton) findViewById(R.id.rd11);

        rd2 = (RadioButton) findViewById(R.id.rd22);


        mobile_number = (EditText) findViewById(R.id.mobile_number);
        password = (EditText) findViewById(R.id.EditText01);
        conpassword = (EditText) findViewById(R.id.editText3);
        hint = (EditText) findViewById(R.id.hint);
        email_id = (EditText) findViewById(R.id.email_id);
        //calendar = Calendar.getInstance();
        // year = calendar.get(Calendar.YEAR);

        // month = calendar.get(Calendar.MONTH);
        // day = calendar.get(Calendar.DAY_OF_MONTH);


        signin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //Check all fields
                if (first_name.length() < 3) {
                    Toast.makeText(Signin1.this, "Please Enter correct name", Toast.LENGTH_LONG).show();
                    return;
                }
                if (last_name.length() < 4) {
                    Toast.makeText(Signin1.this, "Please Enter minimum 4 letters in password", Toast.LENGTH_LONG).show();
                    return;


                }
                if (mobile_number.length() < 11) {
                    Toast.makeText(Signin1.this, "Please Enter correct mobile number", Toast.LENGTH_LONG).show();
                    return;
                }
                if (password.length() < 4) {
                    Toast.makeText(Signin1.this, "Please Enter minimum 4 letters in password", Toast.LENGTH_LONG).show();
                    return;
                }
                String strPass1 = password.getText().toString();
                String strPass2 = conpassword.getText().toString();
                if (!strPass1.equals(strPass2)) {
                    Toast.makeText(Signin1.this,
                            "The password does not match.",
                            Toast.LENGTH_SHORT).show();
                    password.setText("");
                    conpassword.setText("");
                    return;
                }
                if (hint.length() < 4) {
                    Toast.makeText(Signin1.this, "Please Enter minimum 4 leters in hint", Toast.LENGTH_LONG).show();
                    return;
                }
                if (email_id.length() < 11) {
                    Toast.makeText(Signin1.this, "Please Enter correct email id", Toast.LENGTH_LONG).show();
                    return;
                }


                //check connectivity
                if (!isOnline(Signin1.this)) {
                    Toast.makeText(Signin1.this, "No network connection", Toast.LENGTH_LONG).show();
                    return;
                }

                //String h = hint.getText().toString();

                String name1 = first_name.getText().toString();
                String name2 = last_name.getText().toString();
                String gender1=rd1.getText().toString();
                String gender2=rd2.getText().toString();

                switch(rg1.getCheckedRadioButtonId())
                {

                    case R.id.rd11 :
                        gender=gender1;
                    case R.id.rd22 :
                        gender=gender2;



                }
                String number = mobile_number.getText().toString();
                String pwd = password.getText().toString();
                String id = email_id.getText().toString();
                //from login.java
                new loginAccess().execute(name1,name2,gender,number,pwd,id);
            }



            private boolean isOnline(Context mContext) {
                ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo netInfo = cm.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isConnectedOrConnecting()) {
                    return true;
                }
                return false;
            }
            //Close code that check online details
        });
    }
    class loginAccess extends AsyncTask<String, String, String> {


        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(Signin1.this);
            pDialog.setMessage("Sig in...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override

        protected String doInBackground(String... args) {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            String name1 = args[0];
            String name2 = args[1];
            String gender=args[2];
            String number = args[3];
            String pwd = args[4];
            //String h = args[2];
            String id = args[5];






            params.add(new BasicNameValuePair("frist_name", name1));
            params.add(new BasicNameValuePair("last_name", name2));
            params.add(new BasicNameValuePair("gendar", gender));
            params.add(new BasicNameValuePair("mobile_number", number));
            params.add(new BasicNameValuePair("pass", pwd));
            //params.add(new BasicNameValuePair("hint", h));
            params.add(new BasicNameValuePair("email", id));

            //params.add(new BasicNameValuePair("blood", item));

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

            Log.d("Create Response", json.toString());

            try {
                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    flag = 0;
                    Intent i = new Intent(getApplicationContext(), Welcome.class);
                    i.putExtra("mobile_number", number);
                    i.putExtra("pass", pwd);
                    startActivity(i);
                    finish();
                } else {
                    // failed to Sign in
                    flag = 1;
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
            if (flag == 1)
                Toast.makeText(Signin1.this, "Please Enter Correct informations", Toast.LENGTH_LONG).show();

        }

    }


}
Atef Hares
  • 4,715
  • 3
  • 29
  • 61

2 Answers2

1

In your onPostExecute method, you are dismissing the progress dialog. But you have already finished your activity in doInBackground method.

You get leaked window exception when you try to access e.g. a dialog when your activity no longer exists.

Go through this thread for more information

Return json.toString(); in your doInBackgroudand move below code from doInBackgroud to your OnPostExecute

try {
        JSONObject json = new JSONObject("file_url");
        int success = json.getInt(TAG_SUCCESS);
        if (success == 1) {
            flag = 0;
            Intent i = new Intent(getApplicationContext(), Welcome.class);
            i.putExtra("mobile_number", number);
            i.putExtra("pass", pwd);
            startActivity(i);
            pDialog.dismiss(); //Should be called before finishing the activity
            finish();
        } else {
            // failed to Sign in
            flag = 1;
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
Community
  • 1
  • 1
Nayan
  • 367
  • 4
  • 18
0

It's due to your progress dialog. In onPostExecute put this condition:

if (progressDialog != null) {
    progressDialog.dismiss();
    progressDialog = null;
}
VincenzoC
  • 30,117
  • 12
  • 90
  • 112
Gevaria Purva
  • 552
  • 5
  • 15
  • thanks every body i resolve it ,, the problem was in my php date base .. the app didn`t find it ,, i edit the php files and url connection and it now well working – Mostafa Elgaml Jun 19 '17 at 14:41