Впервые показано Активность решение - PullRequest
3 голосов
/ 03 сентября 2011

Мне нужно показать один SecondActivity только один раз и только при первом запуске приложения. Я реализовал это следующим образом (см. Ниже), но мне не очень нравится решение, потому что мне нужно накачать макет на onResume(), потому что если у меня нет, у меня появляется пустой Activity, когда я нажимаю back аппаратная кнопка, являющаяся на SecondActivity.

public class TestActivity extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";
    public static final String FIRST_RUN = "FirstRun";

    SharedPreferences sharedPreferences;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sharedPreferences = getSharedPreferences(PREFS_NAME, 0);

        if (sharedPreferences.getBoolean(FIRST_RUN, false)) {
            setContentView(R.layout.main);
        } else {
            Intent i = new Intent(this, Second.class);
            startActivity(i);
        }
    }


    @Override
    protected void onResume() {
        super.onResume();
        setContentView(R.layout.main);
    }
}

В Second Activity Я просто поставил флаг FirstRun в true.

Ответы [ 3 ]

4 голосов
/ 03 сентября 2011

В первом Activity вызове finish() после совершения вызова на startActivity(i)

Вот так ...

if (sharedPreferences.getBoolean(FIRST_RUN, false)) {
    setContentView(R.layout.main);
} else {
    Intent i = new Intent(this, Second.class);
    startActivity(i);
    finish();
}

Затем можно удалить setContentView(...) изonResume().

2 голосов
/ 03 сентября 2011

Лучший способ, который я могу себе представить, - это активность Init, которая не имеет макета и просто решает, какое действие запустить первым

0 голосов
/ 03 сентября 2011

Если все, что вам нужно, это запретить пользователю возвращаться к действию, добавьте флаг «noHistory» в файл манифеста, например так:

<activity android:name=".SecondActivity" android:noHistory="true">

Если это ваш «экран-заставка»активность, которая должна отображаться только при запуске приложения, выполните следующие действия:

<activity android:name=".SecondActivity" android:noHistory="true">
     <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...