1

私のアプリケーションはサーバーへの接続を必要とするため、設定を行わないと機能しません。プリファレンスは を使用して設定されSharedPreferencesます。私が探しているのは、ユーザーを設定アクティビティに誘導するパターンです。何が一般的ですか?

現在、すべての設定が設定されているかどうかを確認しています。それ以外の場合は、設定アクティビティを開始しますonCreateonResume問題は:

  1. アクティビティが 2 回開始されます ( と を介しonCreateonResume)
  2. ユーザーは、バック ハードウェア キーでメイン アクティビティに戻れることを知らない可能性があります。

これを実装するための提案はありますか?

4

3 に答える 3

1
  1. onResumeは常に の後に呼び出されるonCreateため、メソッドでチェックを実行して新しいアクティビティを開始するだけで済みますonResume

  2. 次のように、ロードToast時にを表示できます。SettingsActivity

    Toast.makeText(context, "Press back to return.", Toast.LENGTH_SHORT).show();
    

アプリを使用する前にこれらの設定を入力する必要があることを がユーザーに伝え始めるときに、Toastまたはを表示することもできます。AlertDialogSettingsActivity

于 2013-01-03T12:31:23.037 に答える
1

設定アクティビティを開くためのボタンを備えた「最初に設定を設定してください」などのメッセージを含むポップアップダイアログを表示することをお勧めします。SharedPreferences のチェックとダイアログを開くことは、onResume で行うことができます。
ユーザーが設定の編集を終了すると (そして保存ボタンを押すと)、設定アクティビティを自動的に閉じます。

于 2013-01-03T12:32:17.303 に答える
1

どのアクティビティを開始するかを決定できる LauncherActivity クラスを作成します - PreferenceActivity または MainActivity:このアドバイスも確認してください

public class LauncherActivity extends Activity {

    SharedPreferences settings;

    public void onCreate(Bundle savedInstanceState) {

        settings = getSharedPreferences(PREFS_NAME, 0);

        if (settings.getBoolean(PREFS_REG, false)) {
            startActivity( new Intent(this, MAinActivity.class) );
            finish();
        } else {
             Intent enableBtIntent = new Intent(this, PreferenceActivity.class);
         startActivityForResult(enableBtIntent, SETTINGS);
        }
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(requestCode == SETTINGS ) {
             startActivity( new Intent(this, MAinActivity.class) );
             Editor editor = settings.edit();
             editor.putBoolean(PREFS_REG, true);
             editor.commit();
             finish();
        }

    }
}

ユーザーが「登録済み」の場合は、PREFS_REG をtrueに設定します。onActivityResult()

于 2013-01-03T12:33:33.693 に答える