2012-05-27 1 views
0

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

У меня есть основное действие, которое я хочу вызвать/создать экран справки (это действительно второе действие), когда пользователь впервые попадает в приложение.

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

Итак, я задал предпочтение в файле SharedPreferences. Весь код работает отлично, в том числе материал SharedPreferences (я могу проверить это, посмотрев на CheckBox, который я установил на экране настроек, который я сделал, чтобы позволить пользователю отказаться (или позже) к экрану справки открытия.)

Вот код, у меня в начале моего OnCreate() (переназначения) метод:

spSettings = getSharedPreferences(strPrefsFilename, 0); 
bHelpOnStart = spSettings.getBoolean(strHelpParamName, true); 

Затем я использую просто:

if (bHelpOnStart) 
{ 
    // Show help screen. 
} 

проблема заключается в том, что OnCreate() для моя основная деятельность называется каждый раз, когда я возвращаюсь из какой-то другой деятельности! Я хочу проверить, отображается ли экран справки, ТОЛЬКО, когда пользователь приходит в приложение из «снаружи», в частности, со страницы «Главная страница».

Есть ли способ в действии, который ТОЛЬКО называется, когда действие происходит от «снаружи» в том смысле, о котором я только что упомянул?

Спасибо!

ответ

0

Возможное решение:

В классе приложения:

public static boolean firstStart = true; 

В классе активность:

onCreate(){ 
    boolean firstStart = ((MyApplication)getApplicationContext()).firstStart; 
    if (bHelpOnStart && firstStart) { startHelp(); } 

    ((MyApplication)getApplicationContext()).firstStart = false; 
} 

Примечание это не хороший стиль кодирования, (лучше с одноплодной), но вы должен получить эту идею. Конечно, если ваше приложение останется в памяти, и пользователь снова откроет его из панели запуска, он не отобразит firstStart; но по крайней мере, когда он вернется из одной активности (вашего приложения) в основную, он снова не отобразит помощь. Нет простого способа определить, кто начинает вашу деятельность.

+0

Большое спасибо xandy. Да, я закончил делать что-то подобное, но я положил его onPause(), а не onCreate(). Но то, что я сделал, в точности то, что вы предлагаете здесь. Я до сих пор не удовлетворен на 100%, но, похоже, что на самом деле нет способа завершить приложение с Android, как на традиционных платформах, идея приложения «запуск» здесь размыта. Возможно, кто-то знает что-то о общей философии здесь. Я действительно пытался понять это, чтобы не воспользоваться. –

Смежные вопросы