登出。按下后退按钮,再次登录

时间:2018-03-06 08:48:56

标签: android login

从这个页面我退出了。它正在正确注销,但是当按下后退按钮时,它会再次登录。我已经给出了一个正确的意图功能,但它并没有按照我的命令行事。请告诉我这个问题的解决方案。

  

欢迎页面代码: -

public class Welcome extends AppCompatActivity {

    Button __btnlogout;
    Button btn1;
    Button btn2;
    DatagramSocketThread mDatagramSocketThread;

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

        __btnlogout = (Button)findViewById(R.id.btnLogout);


        __btnlogout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                SharedPreferences.Editor editor = pref.edit();
                editor.putBoolean("isLogin", false);
                editor.commit();
                Intent intent = new Intent(Welcome.this,
                        login.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);

            }
        });




        btn1 = (Button)findViewById(R.id.btn11);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("MainActivity", "22");

                mDatagramSocketThread = new DatagramSocketThread();
                mDatagramSocketThread.start();
                Intent intent = VpnService.prepare(getApplicationContext());
                if (intent != null) {
                    startActivityForResult(intent, 0);
                } else {
                    onActivityResult(0, RESULT_OK, null);
                }
            }
        });
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            Log.e("MainActivity", "23");

            Intent intent = new Intent(Welcome.this, MyClass.class);
            Log.e("MainActivity", "24");

            startService(intent);
        }

        btn2 = (Button)findViewById(R.id.btn22);
        btn2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Log.e("MainActivity", "25");

                Intent intent;
                intent = new Intent(Welcome.this, MyClass.class);
                Log.e("MainActivity", "26");

                stopService(intent);
            }
        });
    }
}

我希望在退出时甚至在按下后退按钮后进入登录页面。

  

登录页面代码: -

public class login extends AppCompatActivity {
    SQLiteDatabase db;
    SQLiteOpenHelper openHelper;
    Button __btnLogin;
    EditText __txtEmail,__txtPass;
    Cursor cursor;




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





        Log.d("login","13");

        openHelper = new DatabaseHelper(this);
        db=openHelper.getReadableDatabase();
        __btnLogin = (Button)findViewById(R.id.btnLogins);


        __txtEmail = (EditText)findViewById(R.id.txtEmails);
        __txtPass = (EditText)findViewById(R.id.txtPasss);


        SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = pref.edit();
        editor.putBoolean("isLogin", true);
        editor.commit();






        Log.d("login","14");

        __btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String email = __txtEmail.getText().toString();
                String pass = __txtPass.getText().toString();




                if (pass == "" || email == "") {

                    Toast.makeText(getApplicationContext(),"No Entry", Toast.LENGTH_LONG).show();

                }



                Log.d("login","15");

                cursor = db.rawQuery("SELECT * FROM "+ DatabaseHelper.TABLE_NAME + " WHERE " + DatabaseHelper.COL_5 + " =? AND " + DatabaseHelper.COL_4 + " =? ", new String[]{email,pass});
                Log.d("login","16");

                if(cursor!=null) {
                    Log.d("login","17");

                    if (cursor.getCount()>0) {
                        Log.d("login","18");
                        //cursor.moveToNext();
                        Log.d("login","19");
                        startActivity(new Intent(login.this, Welcome.class));
                        Toast.makeText(getApplicationContext(), "Login Successfully", Toast.LENGTH_LONG).show();
                    }

                    else {
                        Log.d("login","20");
                        Toast.makeText(getApplicationContext(),"Error", Toast.LENGTH_LONG).show();
                        Log.d("login","21");
                    }
                }



            }
        });




    }
}

谢谢

6 个答案:

答案 0 :(得分:3)

您可以在登录页面上覆盖onBackPressed,然后当用户点击后面时,您可以按照自己的方式处理:

@Override
public void onBackPressed()
{
     //super.onBackPressed();  // disable this
}

答案 1 :(得分:2)

退出时,您需要finish()之前的所有Activity。尝试下面的代码您可以发出标记Intent.FLAG_ACTIVITY_NEW_TASK

Intent intent = new Intent(login.this, Welcome.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();

关于你提出的问题我想在退出时甚至在按下后退按钮后进入登录页面。
这不是任何应用程序的正确行为。当您从堆栈上的最后一个活动返回时,该应用程序应该关闭。因此,请勿在“登录活动”中禁用onBackPressed()

答案 2 :(得分:1)

我认为您不应该正确清除共享首选项,或者在呈现欢迎活动之前检查共享首选项值。然后,您应该在finish();

之后添加startActivity()
SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("isLogin", false);
editor.commit();
Intent intent = new Intent(Welcome.this,login.class);         
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();

要防止意外登录,您应该检查之前设置的sharedPreferences值。后退按钮禁用不是一个好选择。

答案 3 :(得分:0)

您必须在登录时完成欢迎活动,因此除非再次登录,否则用户将无法再次返回此活动。你必须添加finish();注销时

Intent intent = new Intent(Welcome.this,login.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();

在您登录页面中,当您按下后退按钮,退出应用程序或执行其他操作时,您还可以通过覆盖onBackPressed()来处理您要执行的操作;方法

@Override
public void onBackPressed()
{
  super.onBackPressed();
}

答案 4 :(得分:0)

成功登录后更改了isLogin Flag, 更新您的登录活动代码,

public class login extends AppCompatActivity {
    SQLiteDatabase db;
    SQLiteOpenHelper openHelper;
    Button __btnLogin;
    EditText __txtEmail,__txtPass;
    Cursor cursor;




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





        Log.d("login","13");

        openHelper = new DatabaseHelper(this);
        db=openHelper.getReadableDatabase();
        __btnLogin = (Button)findViewById(R.id.btnLogins);


        __txtEmail = (EditText)findViewById(R.id.txtEmails);
        __txtPass = (EditText)findViewById(R.id.txtPasss);




        Log.d("login","14");

        __btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String email = __txtEmail.getText().toString();
                String pass = __txtPass.getText().toString();




                if (pass == "" || email == "") {

                    Toast.makeText(getApplicationContext(),"No Entry", Toast.LENGTH_LONG).show();

                }



                Log.d("login","15");

                cursor = db.rawQuery("SELECT * FROM "+ DatabaseHelper.TABLE_NAME + " WHERE " + DatabaseHelper.COL_5 + " =? AND " + DatabaseHelper.COL_4 + " =? ", new String[]{email,pass});
                Log.d("login","16");

                if(cursor!=null) {
                    Log.d("login","17");

                    if (cursor.getCount()>0) {
                        Log.d("login","18");
                        //cursor.moveToNext();
                        Log.d("login","19");
  SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = pref.edit();
        editor.putBoolean("isLogin", true);
        editor.commit();

                        startActivity(new Intent(login.this, Welcome.class));
                        Toast.makeText(getApplicationContext(), "Login Successfully", Toast.LENGTH_LONG).show();
                    }

                    else {
                        Log.d("login","20");
                        Toast.makeText(getApplicationContext(),"Error", Toast.LENGTH_LONG).show();
                        Log.d("login","21");
                    }
                }



            }
        });




    }
}

答案 5 :(得分:0)

如果单击“注销”按钮,则导航到登录活动,并在登录活动中收听后退

意图...... 光洁度();

<强> onBackPressed();