экран входа не отображается - PullRequest
0 голосов
/ 23 февраля 2020

Не закрывайте вопрос, если у вас нет ответов / Не хотите помочь остаться в стороне

Привет приложение не показывает активность входа, когда она установлена, но когда я очищаю кеш и данные на устройстве и перезапустите приложение, затем оно показывает активность входа в систему, и после входа в систему оно приводит меня к приложению , но я хочу, чтобы оно сначала привело меня к экрану входа в систему и после входа в систему, тогда только оно должно позволить мне go непосредственно на главный экран всякий раз, когда оно запускает приложение, пока оно не выйдет из него

я реализовал двойное нажатие кнопки возврата в качестве выхода. Повлияет ли это на проблему с экраном входа?

В чем моя ошибка, может кто-нибудь сказать мне

Главная страница


    @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>

Основным видом деятельности является spla sh экран , после чего он должен возьми меня к экрану входа

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 голосов
/ 23 февраля 2020

Прежде всего от вашего SplashActivity go до LoginActivity. Когда пользователи вошли в систему, введите SharedPreference и установите логическое значение true и проверьте его на экране spla sh. Если пользователь уже вошел в систему, тогда значение равно true. Если значение истинно go - для действия MainPage, иначе go Активность входа в систему.

Для SharedPreference следуйте официальному действию c здесь

...