dimanche 20 décembre 2015

Android, trouble in closing dialog at button click

I'm developing some integration app for a social network. I'm on my wits end with a new problem. I have a dialog which is getting some information through two pairs of spinners and edit texts, one for likers and one for my likes. Edit texts are visible just if user chooses limited number of likes or my likes. You see the code below for this. The dialog works well and terminates properly except for one specific situation: When likers is set to "get all" and my likes is set to "get recent" (in other words, when likers editText and text view are not visible but my likes's are visible). Do you see some issue which i can't?

 btnLikeStatsUpdate = (Button) findViewById(R.id.btnLikeStatsUpdate);
    btnLikeStatsUpdate.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            final Dialog dialog = new Dialog(context);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(R.layout.like_stats);
            dialog.show();

            final TextView tvLikers  = (TextView) dialog.findViewById(R.id.textView2);
            final TextView tvMyLikes = (TextView) dialog.findViewById(R.id.textView3);
            final EditText edLikers  = (EditText) dialog.findViewById(R.id.edLikersNumber);
            final EditText edMyLikes = (EditText) dialog.findViewById(R.id.edMyLikesNumber);

            final String[] likers = {"Select","Get recent likers list" , "Get all likers list"};
            final String[] myLikes = {"Select","Get recent likes I've done" , "Get all likes I've done"};

            Spinner spinnerLikers    = (Spinner) dialog.findViewById(R.id.spinnerLikers);
            Spinner spinnerMyLikes   = (Spinner) dialog.findViewById(R.id.spinnerMyLikes);
            Button btnGetLikeNumbers = (Button) dialog.findViewById(R.id.btnGetLikeNumbers);

            spinnerLikers.setAdapter( new ArrayAdapter<String>(getBaseContext(),
                    android.R.layout.simple_spinner_item,likers));
            spinnerMyLikes.setAdapter( new ArrayAdapter<String>(getBaseContext(),
                    android.R.layout.simple_spinner_item,myLikes));

            spinnerLikers.setOnItemSelectedListener(new OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
                    switch(arg2){
                    case 0:
                        tvLikers.setVisibility(View.GONE);
                        edLikers.setVisibility(View.GONE);
                        positionLikers = true;
                        break;
                    case 1:
                        tvLikers.setVisibility(View.VISIBLE);
                        edLikers.setVisibility(View.VISIBLE);
                        positionLikers = false;
                        break;

                    case 2:
                        tvLikers.setVisibility(View.GONE);
                        edLikers.setVisibility(View.GONE);
                        positionLikers = false;
                        break;
                    }
                }
                public void onNothingSelected(AdapterView<?> arg0) {
                }
                });



            spinnerMyLikes.setOnItemSelectedListener(new OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
                    switch(arg2){
                    case 0:
                        tvMyLikes.setVisibility(View.GONE);
                        edMyLikes.setVisibility(View.GONE);
                        positionMyLikes = true;
                        break;
                    case 1:
                        tvMyLikes.setVisibility(View.VISIBLE);
                        edMyLikes.setVisibility(View.VISIBLE);
                        positionMyLikes = false;
                        break;
                    case 2:
                        tvMyLikes.setVisibility(View.GONE);
                        edMyLikes.setVisibility(View.GONE);
                        positionMyLikes = false;
                        break;
                    }

                }
                public void onNothingSelected(AdapterView<?> arg0) {
                }
                });


            btnGetLikeNumbers.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View arg0) {
                    try { 

                        likersNumber  = Integer.valueOf(edLikers.getText().toString()); 
                        myLikesNumber = Integer.valueOf(edMyLikes.getText().toString()); 

                        likersNumberFinal  = likersNumber;
                        myLikesNumberFinal = myLikesNumber;

                        }
                        catch (NumberFormatException e) {
                        }
                    if (positionLikers || positionMyLikes){
                        Toast.makeText(getBaseContext(), "Select how to get like information", Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if (tvLikers.getVisibility() == 0) {
                        if (likersNumber == null || likersNumber == 0){
                             Toast.makeText(getBaseContext(), "Enter a non zero number likers", Toast.LENGTH_SHORT).show();
                             return;
                        }
                    }

                    if (edMyLikes.getVisibility() == 0) {
                        if (myLikesNumber == null || myLikesNumber == 0) {
                             Toast.makeText(getBaseContext(), "Enter a non zero number mylikes", Toast.LENGTH_SHORT).show();
                             return;
                        }
                    }

                    dialog.dismiss();
                    likersNumber  = null;
                    myLikesNumber = null;
                }
            });

Aucun commentaire:

Enregistrer un commentaire