1

ユーザーがアプリを開くと、チュートリアル (ScreenSlideActivity.java と呼ばれるページャーのスライド フラグメントを含むアクティビティ) がポップアップします。ユーザーがチュートリアルのスライドを終了したら、「終了」ボタンを押すと、MainActivity が初期化されます (drawerLayout、drawerToggle などを作成します)。

私がする必要があるのは、アプリの最初の起動後にチュートリアル アクティビティを 1 回だけ開くことです。

メインアクティビティでこのコードを試しました:

if (savedInstanceState == null) {
            SelectItem("tutorial");
}

ScreenSlideActivity.java がすぐに開始されることを確認します。このソリューションの問題は、チュートリアルが開かれたときに、そこから MainActivity.java にアクセスできなくなったことです。「アップ」ボタンからも、チュートリアルの最後のページの「終了」ボタンからも、おそらく何らかの理由で親アクティビティとしてのメインはもうありません。

次に、このソリューション変更アプリケーションの開始アクティビティを試しました-Android がマニフェスト xml ファイルを変更します。追加:

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

ScreenSlideActivity に。このソリューションの問題は、プロジェクトの構造が変更され、ScreenSlideActivity.java がメインおよび起動アクティビティになる (したがって、ここから MainActivity にアクセスできなくなる) ことです。

他に何ができますか?

4

2 に答える 2

1

SharedPreferences を使用して、アプリを初めて開くかどうかを確認/設定できます

String preferences_name = "isFirstTime";

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

   ...

    firstTime();
}
...

public  void  firstTime(){

    SharedPreferences sharedTime = getSharedPreferences(preferences_name,0); 
    if (sharedTime.getBoolean("firstTime",true))
    {

        //Your tutorial code

        sharedTime.edit().putBoolean("firstTime",false).apply();
    }
    else
    {
        //When not using tutorial code

   }

}

ここで同様の質問: https://stackoverflow.com/a/13237848/4555911

于 2015-03-04T20:09:31.563 に答える