未显示登录屏幕

时间:2020-02-23 17:08:49

标签: android android-activity

如果您没有Ans /不想帮助您,请不要回答

Hi应用安装后未显示登录活动,但是当我清除设备中的缓存和数据并重新启动应用后,它显示登录活动,登录后将我带到应用 但是我希望它首先将我带到登录屏幕,然后登录,然后它只应允许我在启动应用程序之前直接进入主屏幕,直到从应用程序注销为止。

我已经实现了双击返回按钮作为退出。这会影响登录屏幕问题吗?

谁能告诉我我的错误

主页


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_menu);
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
        ViewPager viewPager = findViewById(R.id.view_pager);
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);

    }

    boolean doubleBackToExitPressedOnce = false;
    @Override
    public void onBackPressed() {

        if (doubleBackToExitPressedOnce) {
            finish();
            return;
        }

        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce=false;
            }
        }, 2000);

    }
}

登录页面

public class LoginPage extends AppCompatActivity {
    private FirebaseAuth mAuth;
    private Button loginbt;
    private EditText emailtxt, passwordtxt;
    private final String TAG = "LoginPage";



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

        emailtxt = findViewById(R.id.Usernamein);
        passwordtxt = findViewById(R.id.Passwordin);
        loginbt = findViewById(R.id.loginbtn);


        // Initialize Firebase Auth
        mAuth = FirebaseAuth.getInstance();

        loginbt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = emailtxt.getText().toString();
                String password = passwordtxt.getText().toString();
                if(TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){
                    Toast.makeText(getApplicationContext(),"Enter Email and Password",
                            Toast.LENGTH_LONG).show();
                    return;
                }
                mAuth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(LoginPage.this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                if (task.isSuccessful()) {
                                    // Sign in success, update UI with the signed-in user's information
                                    Log.d(TAG, "signInWithEmail:success");
                                    FirebaseUser user = mAuth.getCurrentUser();
                                    updateUI(user);
                                } else {
                                    // If sign in fails, display a message to the user.
                                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                                    Toast.makeText(LoginPage.this, "Authentication failed.",
                                            Toast.LENGTH_SHORT).show();

                                }


                            }
                        });
            }
        });
    }
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        if (currentUser != null){
            updateUI(currentUser);
        }

    }

    public void updateUI(FirebaseUser currentUser){
        Intent intent = new Intent(this, MainMenu.class);
        intent.putExtra("email", currentUser.getEmail());
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent);
    }
}

MainFest

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.crimerecords">


    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Add_Criminals"
            android:parentActivityName=".MainMenu"/>
        <activity
            android:name=".MainMenu"
            android:theme="@style/AppTheme.NoActionBar"> </activity>
        <activity
            android:name=".LoginPage"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
        <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.example.android.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"></meta-data>
        </provider>


        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />
    </application>



</manifest>

主要活动是一个初始屏幕,之后它应带我进入登录屏幕

public class MainActivity extends AppCompatActivity {
    private static int SPLASH_SCREEN_TIME_OUT=2000;
    //After completion of 2000 ms, the next activity will get started


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //This method is used so that your splash activity
        //can cover the entire screen.

        setContentView(R.layout.activity_main);

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                Intent i=new Intent(MainActivity.this,
                        LoginPage.class);
                //Intent is used to switch from one activity to another.

                startActivity(i);
                //invoke the SecondActivity.

                finish();
                //the current activity will get finished.

            }

        }, SPLASH_SCREEN_TIME_OUT);

    }

}

1 个答案:

答案 0 :(得分:0)

首先从您的SplashActivity转到LoginActivity。当用户登录时,请输入SharedPreference并输入一个布尔值true并在您的初始屏幕活动中进行检查。如果用户已经登录,则该值为true。如果该值为true,则转到MainPage活动,否则转到LogIn Activity。

对于SharedPreference,请遵循官方文档here

相关问题