如何启动用户只在android中键入一次信息的活动?

时间:2017-06-08 12:33:11

标签: android

这是我的登录活动代码。我只想在用户登录将直接打开主要活动的下一次之后启动我的用户信息以便用户输入他们的信息。任何人都可以帮助我或教我吗?

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{

private Button buttonSignIn;
private EditText editTextEmail;
private EditText editTextPassword;
private TextView textViewSignup;
private ProgressDialog progressDialog;
private FirebaseAuth firebaseAuth;

private SharedPreferences prefs;

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

    Boolean session_tag = prefs.getBoolean("session", false);
    if(session_tag)
    {
        startActivity(new Intent(getApplicationContext(),MainActivity.class));

    }



    firebaseAuth = FirebaseAuth.getInstance();


    if(firebaseAuth.getCurrentUser() !=null){
        //profile activity here
    }



    editTextEmail = (EditText) findViewById(R.id.editTextEmail);
    editTextPassword = (EditText) findViewById(R.id.editTextPassword);
    textViewSignup = (TextView) findViewById(R.id.textViewSignUp);
    buttonSignIn = (Button) findViewById(R.id.buttonSignin);


    progressDialog = new ProgressDialog(this);
    buttonSignIn.setOnClickListener(this);
    textViewSignup.setOnClickListener(this);

    prefs = PreferenceManager.getDefaultSharedPreferences(this);
}



private void userLogin(){
    String email = editTextEmail.getText().toString().trim();
    String password = editTextPassword.getText().toString().trim();


    if(TextUtils.isEmpty(email)){
        //email is empty
        Toast.makeText(this,"Please enter email", Toast.LENGTH_SHORT).show();
        //stopping the function execction further
        return;
    }

    if(TextUtils.isEmpty(password)){
        //password is empty
        Toast.makeText(this,"Please enter password",Toast.LENGTH_SHORT).show();
        //stopping the function execution further
        return;
    }
    //if validations are ok

    progressDialog.setMessage("Logging In...");
    progressDialog.show();


    firebaseAuth.signInWithEmailAndPassword(email,password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    progressDialog.dismiss();

                    if(task.isSuccessful()){

                        //start the profle activity
                        finish();
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                    }else{
                        Toast.makeText(getApplicationContext(),"Wrong email or password",Toast.LENGTH_SHORT).show();
                    }
                }

            });
}



@Override
public void onClick(View view) {
    if(view == buttonSignIn){
        userLogin();

    }
    if (view == textViewSignup){
        finish();
        startActivity(new Intent(this,RegisterActivity.class));


    }
}

}

3 个答案:

答案 0 :(得分:1)

在共享偏好设置中使用布尔值。

onComplete方法中,添加boolean loggedIn = true并将其添加到SharedPreferences,然后启动MainActivity。

在LoginActivity开始时,访问SharedPreferences并检查布尔值是否为true。 如果真正启动MainActivity。

SharedPreferences指南:SharedPrefs

答案 1 :(得分:0)

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{

private Button buttonSignIn;
private EditText editTextEmail;
private EditText editTextPassword;
private TextView textViewSignup;
private ProgressDialog progressDialog;
private FirebaseAuth firebaseAuth;
private SharedPreferences prefs;

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

    firebaseAuth = FirebaseAuth.getInstance();


    if(firebaseAuth.getCurrentUser() !=null){
        //profile activity here
    }

    editTextEmail = (EditText) findViewById(R.id.editTextEmail);
    editTextPassword = (EditText) findViewById(R.id.editTextPassword);
    textViewSignup = (TextView) findViewById(R.id.textViewSignUp);
    buttonSignIn = (Button) findViewById(R.id.buttonSignin);

    progressDialog = new ProgressDialog(this);
    buttonSignIn.setOnClickListener(this);
    textViewSignup.setOnClickListener(this);

    prefs = PreferenceManager.getDefaultSharedPreferences(); 

    Boolean session_tag = prefs.getBoolean("session", false);
         if(session_tag)
       {
          startActivity(new Intent(getApplicationContext(),MainActivity.class));
       }
}


private void userLogin(){
    String email = editTextEmail.getText().toString().trim();
    String password = editTextPassword.getText().toString().trim();

    if(TextUtils.isEmpty(email)){
        //email is empty
        Toast.makeText(this,"Please enter email", Toast.LENGTH_SHORT).show();
        //stopping the function execction further
        return;
    }

    if(TextUtils.isEmpty(password)){
        //password is empty
        Toast.makeText(this,"Please enter password",Toast.LENGTH_SHORT).show();
        //stopping the function execution further
        return;
    }
    //if validations are ok

    progressDialog.setMessage("Logging In...");
    progressDialog.show();

    firebaseAuth.signInWithEmailAndPassword(email,password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    progressDialog.dismiss();

                    if(task.isSuccessful()){
                        //start the profle activity
                       prefs.edit().putBoolean("session", true).apply();
                        finish();
                        startActivity(new Intent(getApplicationContext(),MainActivity.class));
                    }else{
                        Toast.makeText(getApplicationContext(),"Wrong email or password",Toast.LENGTH_SHORT).show();
                    }
                }

            });
}

@Override
public void onClick(View view) {
    if(view == buttonSignIn){
        userLogin();

    }
    if (view == textViewSignup){
        finish();
        startActivity(new Intent(this,RegisterActivity.class));


    }
}

}

如果你想检查布尔变量,那么我在这里写了一些代码:

prefs.edit().putBoolean("session", true).apply();

获取值布尔值

session_tag = prefs.getBoolean("session", false);

答案 2 :(得分:0)

@Bleach如果你想在一个活动中将一些值发送到另一个活动你有三种方法在android studio中执行此操作 1.你使用Intent。意图的帮助您将一个活动的价值发送给另一个活动。 2.共享首选项。共享首选项的帮助您创建会话并将一个活动值发送给另一个。 捆绑。捆绑包的帮助当您将一个活动数据发送到另一个活动时,您将数据一活动共享给另一个活动您在捆绑包中压缩数据并发送到另一个活动。 谢谢 。 如果这篇文章帮助你请告诉我。我在等你的回复。