6

次のクラスSplashActivity.javaがあります。

public class SplashScreen extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.splash);
        Thread timer = new Thread(){
            public void run(){
                try{
                    sleep(5000);
                }catch(InterruptedException e)
                {
                    e.printStackTrace();
                }
                finally{
                    Intent tutorial = new Intent(SplashScreen.this, TutorialOne.class);
                    startActivity(tutorial);
                }

            }
        };
        timer.start();
          }
}

アプリが初めてモバイル デバイスにインストールされたときに、このアクティビティを 1 回だけ読み込むようにします。アンドロイドが初めてなので、これについてはほとんどわかりません。が使用される場所を読みましたSharedPreferencesが、実装を理解していませんでした。そして、このアクティビティの重要な点は、アクティビティがLauncher初めて使用されるときに機能する必要があるということです。それが私を本当に混乱させたのです。マニフェスト ファイルで別のアクティビティを宣言しているため、私の場合はMainPage.java. では、このロジックをどのように実装できますか?? で電話をかけますかSplashActivityMainPageそれとも他に何かしなければならないことがありますか?? 誰か助けてください?

可能であれば、誰かがこのロジックを実装するコードを書き留めてもらえますか?

4

2 に答える 2

24

このコードを onCreate メソッドに追加します

    SharedPreferences pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
    if(pref.getBoolean("activity_executed", false)){
        Intent intent = new Intent(this, TutorialOne.class);
        startActivity(intent);
        finish();
    } else {
        Editor ed = pref.edit();
        ed.putBoolean("activity_executed", true);
        ed.commit();
    }

Android の設定からデータを削除しない限り、SharedPreferences はアプリを実行するたびに保持されます。最初は、そのような設定 (ActivityPREF) に保存されたブール値 (activity_executed) から値を取得します。

値が見つからない場合は false が返されるため、設定を編集して値を true に設定する必要があります。次の実行でアクティビティが開始されTutorialOneます。

finish()スタック履歴から現在のアクティビティを消去するため、TutorialOne の戻るボタンを使用して戻ることはできません。

マニフェストについて、このアクティビティを次のように設定できます

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

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

アプリが実行されるたびに、このアクティビティが起動されますが、 true が設定されているため"activity_executed"、 で新しいアクティビティが開始されstartActivityます。

于 2013-05-07T13:04:07.583 に答える