タイトル画面の実装
タイトル画面は Kii Balance を起動したとき、初めに表示されるフラグメントです。ここでは、Kii Cloud SDK を使ってユーザー登録やログインを行います。
処理の流れ
タイトル画面での処理の流れを以下に示します。
LoginDialogFragment
クラスでは、Butter Knife によってボタンとハンドラーが関連付けられています。
"LOGIN" ボタンは
loginClicked()
メソッドに紐付けられており、LoginDialogFragment
クラスを呼び出してログイン処理を行います。ダイアログへのリクエストコードはREQUEST_LOGIN
です。"REGISTER" ボタンは
registerClicked()
メソッドに紐付けられており、RegistrationDialogFragment
クラスを呼び出してユーザー登録処理を行います。ダイアログへのリクエストコードはREQUEST_REGISTER
です。
リクエストコードの使用方法は、実装技術の紹介(フラグメント) で説明したとおりです。ダイアログ内でログインやユーザー登録が行われると、onActivityResult()
で完了の通知を受けてデータ一覧画面に遷移します。REQUEST_REGISTER
の場合だけ、ユーザー登録を行ったというメッセージが表示されます。
フラグメントの制御方法を知っていれば、上記の流れを容易に追いかけられるため、ここではソースコードの詳細説明を省略します。以下を直接確認してください。
ログインとユーザー登録
ログインとユーザー登録は、LoginDialogFragment
と RegistrationDialogFragment
で行っています。
"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()
が呼び出されないため、ダイアログが表示されたままになり、認証情報を再入力できます。
次は...
データ一覧画面でのデータ取得の方法について説明します。
データ一覧の取得 に移動してください。