初めて実行するかどうかを確認するにはアプリが必要です。初めての場合は、MainActivity
の代わりにLoginActivity
を起動する必要があります。最初の実行でない場合は、いつものようにMainActivity
と表示されます。アプリケーションが最初の実行時にMainActivityの代わりにログインアクティビティを起動する
私はSharedPreference
の値を使用して利用可能かどうかを確認してから、アプリはその最初の実行ではなく実行を決定します。
これは私がこれまで試したものです
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set default values into settings
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
//check if app is running on its first run
SharedPreferences fRun = getPreferences(MODE_PRIVATE);
if(fRun.getBoolean("firstrun", true)){
SharedPreferences.Editor editX=fRun.edit();
editX.putBoolean("firstrun", false);
editX.apply();
//login activity stuff here
//goto login screen
Intent loginIntent=new Intent(getApplicationContext(),LoginActivity.class);
startActivity(loginIntent);
//finish();
} else {
setContentView(R.layout.activity_main);
}
}
}
私の問題は、私は私のアプリを実行すると、それが突然クラッシュし
はなぜアプリがクラッシュしますメッセージに表示される、ありますか?それは私のLoginActivity
のコードがエラーまたはdiを持っているからです。最初にMainActivity
をロードしてからLoginActivity
を呼び出す必要がありますか?
アプリがクラッシュしたときに、ログをここに投稿すると、どこに問題があるのかが分かりやすくなります – Ashish
"superContentView(R.layout.activity_main);"は "super.onCreate(savedInstanceState ); " if-elseからそれを取得しようとします。 – MorZa
@MorZaのように、 'if'の外にレイアウトを設定してください:' LoginActivity'を終了すると、空の 'MainActivity'に戻ります。このユースケースのパターンは、アプリケーションを透明な 'RedirectActivity'で起動し、必要なアクティビティ(あなたの場合は' MainActivity'または 'LoginActivity'のいずれか)にリダイレクトするだけです。 –