タイトル画面の実装

タイトル画面は Kii Balance を起動したとき、初めに表示されるフラグメントです。ここでは、Kii Cloud SDK を使ってユーザー登録やログインを行います。

処理の流れ

タイトル画面での処理の流れを以下に示します。

LoginDialogFragment クラスでは、Butter Knife によってボタンとハンドラーが関連付けられています。

  • "LOGIN" ボタンは loginClicked() メソッドに紐付けられており、LoginDialogFragment クラスを呼び出してログイン処理を行います。ダイアログへのリクエストコードは REQUEST_LOGIN です。

  • "REGISTER" ボタンは registerClicked() メソッドに紐付けられており、RegistrationDialogFragment クラスを呼び出してユーザー登録処理を行います。ダイアログへのリクエストコードは REQUEST_REGISTER です。

リクエストコードの使用方法は、実装技術の紹介(フラグメント) で説明したとおりです。ダイアログ内でログインやユーザー登録が行われると、onActivityResult() で完了の通知を受けてデータ一覧画面に遷移します。REQUEST_REGISTER の場合だけ、ユーザー登録を行ったというメッセージが表示されます。

フラグメントの制御方法を知っていれば、上記の流れを容易に追いかけられるため、ここではソースコードの詳細説明を省略します。以下を直接確認してください。

ログインとユーザー登録

ログインとユーザー登録は、LoginDialogFragmentRegistrationDialogFragment で行っています。

"LOGIN" または "REGISTER" ボタンがタップされると、いずれも以下のようなコードでユーザー名とパスワードをチェックします。KiiUser クラスのスタティックメソッドを使えば、Kii Cloud にアクセスする前に、文字列が妥当かどうかをチェックできます。

// Get a username and password.
String username = mUsernameEdit.getText().toString();
String password = mPasswordEdit.getText().toString();

// Check if the username and password are valid.
if (!KiiUser.isValidUserName(username)) {
  showErrorMessage(R.string.message_invalid_username);
  return;
}
if (!KiiUser.isValidPassword(password)) {
  showErrorMessage(R.string.message_invalid_password);
  return;
}

ユーザー名とパスワードをチェックした後は、ログインまたはユーザー登録を行います。

Kii Cloud SDK の呼び出し方法は、Hello Kii で説明したコードと同じです。ユーザー名 username とパスワード password を引数にしてノンブロッキング API を呼び出します。呼び出し方法の詳細は、Hello Kii の ログイン画面の実装 を参照してください。

ユーザー登録

KiiUser user = KiiUser.builderWithName(username).build();
user.register(new KiiUserCallBack() {
  @Override
  public void onRegisterCompleted(int token, KiiUser user, Exception e) {
    if (e != null) {
      showErrorMessage(MESSAGE_REGISTRATION_FAILED);
      return;
    }

    Fragment target = getTargetFragment();
    if (target == null) {
      dismiss();
      return;
    }
    target.onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, null);
    dismiss();
  }
}, password);

ログイン

KiiUser.logIn(new KiiUserCallBack() {
  @Override
  public void onLoginCompleted(int token, KiiUser user, Exception e) {
    if (e != null) {
      showErrorMessage(R.string.message_login_failed);
      return;
    }

    Fragment target = getTargetFragment();
    if (target == null) {
      dismiss();
      return;
    }
    target.onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, null);
    dismiss();
  }
}, username, password);

成功時は onActivityResult() を呼び出してダイアログの完了を通知し、呼び出し元の TitleFragment クラスで画面遷移を行います。

失敗時は dismiss() が呼び出されないため、ダイアログが表示されたままになり、認証情報を再入力できます。


次は...

データ一覧画面でのデータ取得の方法について説明します。

データ一覧の取得 に移動してください。