0

この質問に触れている投稿はありますが、実際に直接アプローチしたり解決したりする人は誰もいません。

ユーザーが最初にアプリにアクセスしたときに、ヘルプ画面を呼び出す/作成するメインのアクティビティがあります (これは実際には 2 番目のアクティビティです)。

ただし、アプリに慣れているユーザーには、起動時に毎回そのヘルプ画面を表示しないオプションを提供したいと考えています。

そこで、SharedPreferences ファイルで設定を行いました。すべてのコードは、SharedPreferences のものを含め、完全に機能します (ユーザーが最初のヘルプ画面をオプトアウト (または後でオプトアウト) できるようにするために作成した [設定] 画面で設定した CheckBox を見て、これを確認できます)。

onCreate() (オーバーライド) メソッドの先頭にあるコードは次のとおりです。

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

次に、私は簡単に使用します:

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

問題は、メインのアクティビティの onCreate() が、他のアクティビティから戻るたびに呼び出されることです! ヘルプ画面が表示されるかどうかのテストが必要なのは、ユーザーがアプリの「外部」から、具体的には Home->apps ページからアプリにアクセスした場合にのみ発生するようにすることです。

先ほど述べた意味で、アクティビティが「外部」から来た場合にのみ呼び出されるアクティビティにメソッドはありますか?

ありがとうございました!

4

1 に答える 1

0

考えられる解決策:

アプリケーション クラス:

public static boolean firstStart = true;

アクティビティ クラス:

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

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

これは良いコーディング スタイルではないことに注意してください (シングルトンの方が適しています) が、アイデアは理解できるはずです。もちろん、アプリケーションがメモリ内に残っていて、ユーザーがランチャーから再度開いた場合、firstStart は表示されません。ただし、少なくとも (アプリの) 1 つのアクティビティからメインのアクティビティに戻ると、ヘルプが再び表示されることはありません。誰があなたの活動を開始したかを判断する簡単な方法はありません。

于 2012-05-27T01:00:21.867 に答える