首次将活动设为默认活动

时间:2019-09-14 06:02:48

标签: java android

我编写了一个Android应用程序,用于检查在EditText中输入的字符串是否与共享首选项中存储的字符串相同(如果有误),出现Toast,告诉用户他刚刚输入的字符串不正确,这是确实,一个新活动是开放的。我希望每次用户打开应用程序时都打开此打开活动。

这是我尝试的方法:

private PreferenceHelper preferenceHelper;
private ParseContent parseContent;
private final int RegTask = 1;
private EditText editText;
private Button button;
private String string;

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

    parseContent = new ParseContent(this);
    preferenceHelper = new PreferenceHelper(this);

    editText = findViewById(R.id.code);
    button = findViewById(R.id.abonnement);

    final SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            string = editText.getText().toString();
            if (string.equals(pref.getString("code", null))){
                Intent intent = new Intent(Login.this, WelcomeActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }else {
                Toast.makeText(Login.this, "Désolé mais votre code est incorrect",Toast.LENGTH_LONG).show();
            }
        }
    });
}

当用户输入正确的代码(即共享的首选项中的先前注册的代码)时,WelcomeActivty.class打开,但是当用户退出应用程序并再次输入时,总是显示Login.class,而我想WelcomeActivity.class将在每次用户再次输入应用程序时启动。...我该怎么做?!

4 个答案:

答案 0 :(得分:1)

注意:我制作了一个登录系统(没有密码),即使您不在登录系统上,我仍然认为该技术仍然适用于您的情况。

尝试添加另一个共享的首选项,该首选项存储一个布尔值以检查用户是否在线。例如,在您的LoginActivity中,添加

  

editor.putBoolean(“ isOnline”,true); editor.apply();

当您单击登录按钮时。

类似地,当您注销时,只需输入

  

editor.putBoolean(“ isOnline”,false); editor.apply();

这是我根据您的问题所做的事情。

MainActivity.java(这是登录活动)

  public class MainActivity extends AppCompatActivity {

    SharedPreferences pref;
    SharedPreferences.Editor editor;

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

        final EditText et = findViewById(R.id.et);
        Button btnRegister = findViewById(R.id.btn_register);
        Button btnLogin = findViewById(R.id.btn_login);



        pref = getSharedPreferences("MyPref", MODE_PRIVATE);
        editor = pref.edit();

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

                editor.putString("username", et.getText().toString());
                editor.putBoolean("isOnline", false);
                editor.apply();
            }
        });

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

                if (et.getText().toString().equals(pref.getString("username", null))) {

                    Intent intent = new Intent(getApplicationContext(), WelcomeActivity.class);
                    intent.putExtra("name", et.getText().toString());
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

                    editor.putBoolean("isOnline", true);
                    editor.apply();

                    startActivity(intent);
                    finish();
                }
                else {
                    Toast.makeText(MainActivity.this, "Incorrect input", Toast.LENGTH_LONG).show();
                }
            }
        });

// This is when user has not clicked the log out button, then we go to the WelcomeActivity instead
        if (pref.getBoolean("isOnline", false)) {

            startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
            finish();
        }
    }
}

WelcomeActivity.java(登录后我们访问的活动)

public class WelcomeActivity extends AppCompatActivity {
    SharedPreferences pref;
    SharedPreferences.Editor editor;

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


        pref = getSharedPreferences("MyPref", MODE_PRIVATE);
        editor = pref.edit();

        editor.putBoolean("isOnline", true);
        editor.apply();

        Button btnLogout = findViewById(R.id.logout);
        btnLogout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // When user clicks on the logout button, we set this to false. So everything will be back to normal.
                editor.putBoolean("isOnline", false);
                editor.apply();

                if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);
                    finishAffinity();
                }
                else {
                    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(intent);
                    finish();
                }
            }
        });
    }
}

答案 1 :(得分:1)

您需要更改逻辑,打开应用程序Login.class将是您的第一个屏幕,在该屏幕中,您必须检查输入的代码是否与共享首选项值相似,如果为true,则移动登录屏幕。欢迎屏幕,希望我的回答对您有帮助

答案 2 :(得分:1)

配合,可以通过创建会话来完成。

就像您的编辑文本与所需文本匹配时一样,您应该在共享首选项中分配一个值,该值将在创建会话时发挥作用。

button.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View v) {
 string = editText.getText().toString();
 if (string.equals(pref.getString("code", null))){
    SharedPreferences.Editor edit = pref.edit();
    edit.putString("Session", "1");
    edit.apply();
    Intent intent = new Intent(Login.this, WelcomeActivity.class);
  intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  startActivity(intent);
}else {
  Toast.makeText(Login.this, "Désolé mais votre code est incorrect",Toast.LENGTH_LONG).show();
}

现在在所需屏幕的onCreate方法中。只需检查会话值是否包含在您的SharedPreferences中,然后根据需要执行任何操作即可。

快乐编码

答案 3 :(得分:1)

将输入的值保存为共享首选项,还使用“ EncryptedSharedPreferences”来确保安全性,然后

在onCreate检查中,如果用户输入了值并保存,然后再进行检查

if (string.equals(pref.getString("code", null))){
        Intent intent = new Intent(Login.this, WelcomeActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);`enter code here`
}

并完成当前活动 因此,现在自动打开下一个屏幕