Dialog Back按禁用

问题描述 投票:0回答:1

我正在开发应用程序而且我被困在一个位置。我正在使用自定义对话框来显示消息。当我的对话框弹出显示消息时,我将活动上显示的所有视图设置为Invisible,因此在我的对话框打开时看起来不错,没有背景视图。解除对话框的一种方法是单击“确定”按钮,该按钮将活动中存在的视图设置回可见条件。我遇到的问题是如果用户按下后退按钮而不是OK按钮,这将导致对话框变为尿布但视图仍然隐藏。我试图禁用后退按钮,但它无法正常工作。如果用户按两次后退按钮而不是一次,则它可以工作。

Image before the dialog box appears

Image when the dialog box appears

Image when user click back button instead of OK

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.alexeducationchina.alexeducation.App;
import com.alexeducationchina.alexeducation.R;
import com.alexeducationchina.alexeducation.UserAgreement.UserAgreement;
import com.backendless.Backendless;
import com.backendless.BackendlessUser;
import com.backendless.async.callback.AsyncCallback;
import com.backendless.exceptions.BackendlessFault;

public class Register extends AppCompatActivity implements View.OnClickListener {

    private TextView memberRegister ;
    private EditText firstName , lastName , email , password ;
    private Button register ;
    SharedPreferences sharedPreferences ;
    ValidateInformation validateInformation ;
    private CardView cardFirstName , cardLastName , cardEmail , cardPassword , cardRegister ;
    private ImageView userImage ;




    private void linkWithXml () {

        memberRegister = (TextView) findViewById(R.id.memberRegister);
        firstName = (EditText) findViewById(R.id.firstName);
        lastName = (EditText) findViewById(R.id.lastName);
        email = (EditText) findViewById(R.id.email);
        password = (EditText) findViewById(R.id.password);
        register = (Button) findViewById(R.id.register);


        cardFirstName =(CardView) findViewById(R.id.FNC);
        cardLastName =(CardView) findViewById(R.id.LNC);
        cardEmail =(CardView) findViewById(R.id.EC);
        cardPassword =(CardView) findViewById(R.id.PC);
        cardRegister =(CardView) findViewById(R.id.RC);

        userImage = (ImageView) findViewById(R.id.userImage);


    }

    private void settingFonts() {

        firstName.setTypeface(App.getAppInstance().getRegularFont());
        lastName.setTypeface(App.getAppInstance().getRegularFont());
        email.setTypeface(App.getAppInstance().getRegularFont());
        password.setTypeface(App.getAppInstance().getRegularFont());
        memberRegister.setTypeface(App.getAppInstance().getBoldFont());
        register.setTypeface(App.getAppInstance().getBoldFont());

    }



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

        linkWithXml();
        settingFonts();
        register.setOnClickListener(this);
        App.getAppInstance().initApp();

    }







       /*



*/



       private void hideViews () {

           userImage.setVisibility(View.INVISIBLE);
           memberRegister.setVisibility(View.INVISIBLE);
           cardFirstName.setVisibility(View.INVISIBLE);
           cardLastName.setVisibility(View.INVISIBLE);
           cardEmail.setVisibility(View.INVISIBLE);
           cardPassword.setVisibility(View.INVISIBLE);
           cardRegister.setVisibility(View.INVISIBLE);


       }

    @Override
    public void onClick(View v) {

        if (v.getId()==R.id.register){


            hideViews();
            validateInformation = new ValidateInformation(Register.this , "REGISTER");
            validateInformation.register(firstName , lastName , email , password);



       //     startActivity(new Intent(Register.this , UserAgreement.class));

        }


    }

    private void showViews () {

        userImage.setVisibility(View.VISIBLE);
        memberRegister.setVisibility(View.VISIBLE);
        cardFirstName.setVisibility(View.VISIBLE);
        cardLastName.setVisibility(View.VISIBLE);
        cardEmail.setVisibility(View.VISIBLE);
        cardPassword.setVisibility(View.VISIBLE);
        cardRegister.setVisibility(View.VISIBLE);


    }


}


import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.Image;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.alexeducationchina.alexeducation.App;
import com.alexeducationchina.alexeducation.R;
import com.alexeducationchina.alexeducation.UserAgreement.UserAgreement;
import com.backendless.Backendless;
import com.backendless.BackendlessUser;
import com.backendless.async.callback.AsyncCallback;
import com.backendless.exceptions.BackendlessFault;

public class ValidateInformation {


    Context context ;
    ImageView ui ;
    TextView rt ;
    CardView fn ;
    CardView ln;
    CardView e ;
    CardView p ;
    CardView r ;
    ProgressBar progressBar ;
    TextView notice ;
    LinearLayout linearLayout ;

    private static String userOk = "NOT" ;
    ValidateInformation(Context context , String activityName){

           this.context = context ;
        progressBar = new ProgressBar(context , null , R.style.ProgressBarTheme);
           if (activityName.equals("REGISTER"))
           {
         ui = (ImageView) ((Activity)context).findViewById(R.id.userImage);
         rt = (TextView) ((Activity)context).findViewById(R.id.memberRegister);
         fn = (CardView) ((Activity)context).findViewById(R.id.FNC);
          ln = (CardView) ((Activity)context).findViewById(R.id.LNC);
         e = (CardView) ((Activity)context).findViewById(R.id.EC);
         p = (CardView) ((Activity)context).findViewById(R.id.PC);
        r = (CardView) ((Activity)context).findViewById(R.id.RC);
        progressBar = (ProgressBar) ((Activity)context).findViewById(R.id.progressBar);
           }
    }


    public void register(EditText firstName , EditText lastName, EditText email , EditText password){


        String FIRST_NAME = firstName.getText().toString().trim();
        String LAST_NAME = lastName.getText().toString().trim() ;
        String EMAIL = email.getText().toString().trim() ;
        String PASSWORD = password.getText().toString().trim() ;

        String emptyFirstName = "Enter Your First Name";
        String emptyLastName = "Enter Your Last Name";
        String emptyEmail = "Enter Your Email Address" ;
        String emptyPassword = "Enter Your Password";
        String allEmpty = "All The Fields Are Empty";
        if (TextUtils.isEmpty(FIRST_NAME) && TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {

           showMessage(allEmpty);

        }



        else if (!TextUtils.isEmpty(FIRST_NAME)&& TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {
            showMessage(emptyLastName+"\n"+emptyEmail +"\n"+emptyPassword);

        }
        else if (TextUtils.isEmpty(FIRST_NAME)&& !TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {
            showMessage(emptyFirstName+"\n"+emptyEmail +"\n"+emptyPassword);


        }
        else if (TextUtils.isEmpty(FIRST_NAME)&& TextUtils.isEmpty(LAST_NAME) && !TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {
            showMessage(emptyFirstName+"\n"+emptyLastName +"\n"+emptyPassword);


        }
        else if (TextUtils.isEmpty(FIRST_NAME)&& TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && !TextUtils.isEmpty(PASSWORD))
        {
            showMessage(emptyFirstName+"\n"+emptyLastName +"\n"+emptyEmail);


        }




        else if (!TextUtils.isEmpty(FIRST_NAME)&& !TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {

            showMessage(emptyEmail +"\n"+emptyPassword  );

        }
        else if (TextUtils.isEmpty(FIRST_NAME)&& TextUtils.isEmpty(LAST_NAME) && !TextUtils.isEmpty(EMAIL) && !TextUtils.isEmpty(PASSWORD))
        {

            showMessage(emptyFirstName+"\n"+emptyLastName  );
        }



        else if (!TextUtils.isEmpty(FIRST_NAME)&& TextUtils.isEmpty(LAST_NAME) && !TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {
            showMessage(emptyLastName+"\n"+emptyPassword  );



        }
        else if (TextUtils.isEmpty(FIRST_NAME)&& !TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && !TextUtils.isEmpty(PASSWORD))
        {

            showMessage(emptyFirstName+"\n"+emptyEmail  );
        }


        else if (!TextUtils.isEmpty(FIRST_NAME)&& TextUtils.isEmpty(LAST_NAME) && TextUtils.isEmpty(EMAIL) && !TextUtils.isEmpty(PASSWORD))
        {

            showMessage(emptyLastName+"\n"+emptyEmail  );

        }
        else if (TextUtils.isEmpty(FIRST_NAME)&& !TextUtils.isEmpty(LAST_NAME) && !TextUtils.isEmpty(EMAIL) && TextUtils.isEmpty(PASSWORD))
        {

            showMessage(emptyFirstName+"\n"+emptyPassword  );
        }


        else if (TextUtils.isEmpty(FIRST_NAME)){


            showMessage(emptyFirstName);
        }
        else if (TextUtils.isEmpty(LAST_NAME)){

            showMessage(emptyLastName);
        }
        else if (TextUtils.isEmpty(EMAIL)){
            showMessage(emptyEmail);

        }
        else if (TextUtils.isEmpty(PASSWORD)){
            showMessage(emptyPassword);

        }



        else {

            showRegisterViews();
            showProgressBar();
            hideRegisterButton();

            BackendlessUser user = new BackendlessUser();
            user.setProperty( "email", email.getText().toString().trim() );
            user.setPassword(  password.getText().toString().trim() );

            Backendless.UserService.register( user, new AsyncCallback<BackendlessUser>()
            {
                public void handleResponse( BackendlessUser registeredUser )
                {
                    hideRegisterViews();
                    hideProgressBar();
                    userOk = "OK" ;
                    showMessage("You Are Registered");
                    notice.setText("CONGRATULATION");
                    linearLayout.setBackground(ContextCompat.getDrawable(context , R.drawable.upper_rounded_congratulation));



                }

                public void handleFault( BackendlessFault fault )
                {
                    hideRegisterViews();
                    hideProgressBar();


                    switch (fault.getCode()){




                        case "2002" :

                            userOk = "NOT" ;
                            showMessage("Invalid Application Info (Application Id Or Api Key)");

                            break ;


                        case "3009" :

                            userOk = "NOT" ;
                            showMessage("User Registration Is Disabled For The Application");

                            break ;


                        case "3010" :

                            userOk = "NOT" ;
                            showMessage("User Registration Has An Unknown Property And Dynamic Properties Are Disabled For This Version Of The Application");

                            break ;


                        case "3011" :

                            userOk = "NOT" ;
                            showMessage("Missing \"password\" Property");

                            break ;


                        case "3012" :

                            userOk = "NOT" ;
                            showMessage("Required Property Is Missing");

                            break ;


                        case "3013" :

                            userOk = "NOT" ;
                            showMessage("Missing Value For The Identity Property");

                            break ;


                        case "3014" :

                            userOk = "NOT" ;
                            showMessage("External Registration Failed With An Error");

                            break ;


                        case "3021" :

                            userOk = "NOT" ;
                            showMessage("General User Registration Error. Details Included With The Error Message");

                            break ;


                        case "3033" :

                            userOk = "NOT" ;
                            showMessage("User With The Same Identity Already Exists");

                            break ;


                        case "3038" :

                            userOk = "NOT" ;
                            showMessage("Missing Application-Id Or Collection Of Properties For The Registering User");

                            break ;


                        case "3039" :

                            userOk = "NOT" ;
                            showMessage("Property \"id\" Cannot Ce Used In The Registration Call");

                            break ;


                        case "3040" :

                            userOk = "NOT" ;
                            showMessage("Email Address Is In The Wrong Format");

                            break ;


                        case "3041" :

                            userOk = "NOT" ;
                            showMessage("A Value For A Required Property Is Missing");

                            break ;




                        case "3043" :

                            userOk = "NOT" ;
                            showMessage("Duplicate Properties In The Registration Request");

                            break ;
                        case "8000" :

                            userOk = "NOT" ;
                            showMessage("Property Value Exceeds The Length Limit");

                            break ;





                    }



                }
            } );




        }
        }




        private void hideRegisterButton () {

        r.setVisibility(View.GONE);


        }
        private void hideProgressBar (){

        progressBar.setVisibility(View.INVISIBLE);
        }
        private void showProgressBar () {


        progressBar.setVisibility(View.VISIBLE);



        }

    public void showMessage(String message){



        final Dialog dialog = new Dialog(context);
        dialog.setContentView(R.layout.validation_purpose);

        notice = (TextView) dialog.findViewById(R.id.toolbarTitle);
        TextView information = (TextView) dialog.findViewById(R.id.information);
        linearLayout = (LinearLayout) dialog.findViewById(R.id.linearlayout);


        Button ok = (Button) dialog.findViewById(R.id.ok);

        information.setTypeface(App.getAppInstance().getRegularFont());
        information.setText(message);


        notice.setTypeface(App.getAppInstance().getBoldFont());

        ok.setTypeface(App.getAppInstance().getBoldFont());

        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (userOk.equals("NOT")){

                }

                dialog.dismiss();
                showRegisterViews();

                if (userOk.equals("OK")){

                    context.startActivity(new Intent(context , UserAgreement.class));
                }


            }
        });


        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT , ViewGroup.LayoutParams.MATCH_PARENT);

        dialog.show();

    }

    private void showRegisterViews(){


        ui.setVisibility(View.VISIBLE);
        rt.setVisibility(View.VISIBLE);
        fn.setVisibility(View.VISIBLE);
        ln.setVisibility(View.VISIBLE);
        e.setVisibility(View.VISIBLE);
        p.setVisibility(View.VISIBLE);
        r.setVisibility(View.VISIBLE);



    }
    private  void hideRegisterViews (){


        ui.setVisibility(View.INVISIBLE);
        rt.setVisibility(View.INVISIBLE);
        fn.setVisibility(View.INVISIBLE);
        ln.setVisibility(View.INVISIBLE);
        e.setVisibility(View.INVISIBLE);
        p.setVisibility(View.INVISIBLE);
        r.setVisibility(View.INVISIBLE);

    }




}

我想要的是当用户点击后退按钮什么都不应该发生或阻止我已经使用过的后退按钮

onBackPressed()

方法,但只有当用户点击两次背压时它才有效。什么是我将视图可见性声明为VISIBLE,当按下后按下两次后退按下后视图返回并且问题是我不能回到我之前的活动我做的其他方法是声明通过声明返回视图的方法onRestart()但失败了如果有人帮我解决这个问题,我真的很感激

java android dialog android-alertdialog
1个回答
0
投票

解决了这个问题。这将禁用后退按钮,它就像一个魅力。

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            return keyCode == KeyEvent.KEYCODE_BACK;
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.