本機能はプリファレンスの基礎知識が必要なため先に 「プリファレンス」 の章をお読み願います。
プリファレンスを使うことで、簡便にアプリ固有のデータを記憶・参照することができるようになりますが、合わせて本機能を使うことで、そのプリファレンスを編集するユーザインターフェースを簡単に利用できるようになります。
Mind for Android のパッケージローダ(MindPkgLoader)で、ユーザIDやパスワードを記入する場面に、本機能が使われています。
プリファレンスを編集する本ユーザインターフェースは独立したのアクティビティとして実現するため、本機能を呼び出すにはアクティビティ起動と同じような手続きによります。
注:アクティビティの起動については 「他のアクティビティの起動」 の章を参照してください。
■(親アクティビティから) プリファレンスアクティビティを起動
次のようなプログラムで起動を行います。
文法
<クラス名>で プリファレンスアクティビティを起動 → 真偽
注: 「プリファレンスアクティビティを起動」は「引数を付けてサブアクティビティを起動」をさらに簡略化したものです(ダミーの引数を渡すことでパラメータを減らしています)。
記述例 (メインアクティビティ)
ボタンクリック処理は 本定義 (ボタンID → 戻値)
〜略〜
"PreferenceActSub"を プリファレンスアクティビティを起動し 偽?
ならば 「起動失敗」を ちょっと表示し
0を 返し
終り
つぎに
0を 返す。
プリファレンスアクティビティ(子アクティビティ)側のプログラム |
プリファレンスアクティビティはホーム画面から単独で起動することはできず、親となるアクティビティからプログラムとして起動する形式をとります。
プリファレンスアクティビティでは、該当プリファレンスのうち、編集対象となる要素ごとにユーザインターフェースを規定するソースコードを記述します。
注: Mind for Android の主画面でプリファレンスアクティビティのソースファイルをアップロードした後、上段右枠の中にある「AC」のような種別選択を「PAC」(プリファレンスアクティビティの意味) に変更することを忘れないでください。具体例は本章末尾の サンプルプログラム を参考にしてください。
■プリファレンス編集画面の生成と描画
プリファレンスの編集画面全体のことをMindでは 「プリファレンス編集画面」 と呼ぶしとにします。(Androidの用語で 「プリファレンススクリーン」 と呼ばれるものですがMindでは呼び名を変えています)。まずはそれを生成して画面に描画します。
文法
プリファレンス編集画面を生成 → ID
<文字列>を <ID>に プリファレンス編集画面にタイトルを設定 → ・
<ID>で プリファレンス編集画面を有効化 → ・
記述例
メインとは
_スクリーンは ID
〜略〜
プリファレンス編集画面を生成し _スクリーンに 入れ
「編集画面」を _スクリーンに プリファレンス編集画面にタイトルを設定し
_スクリーンで プリファレンス編集画面を有効化し
〜略〜
もし上記だけを実行したとすると次のような編集画面が現れますが、タイトル表示を除けばまだ白紙の状態です。
■編集要素の生成と描画
続いて、プリファレンスのうち、編集対象としたいレコードについて、データ種別ごとに用意された処理単語を使って記述をおこないます。
プリファレンス編集画面と各キーの編集要素は、ちょうどレイアウトに対するビューの関係に似ています。
レイアウトの中に複数のビューを収容したのと同じように、プリファレンス編集画面の中に複数の編集要素を収容していきます。
(編集要素の生成)
まず下記の 「○○を生成」 の処理単語群によってIDを得て、次にそのIDに対して各種操作を行います。
文法
チェックボックスの編集要素を生成 → ID
エディットテキストの編集要素を生成 → ID
リストの編集要素を生成 → ID
リングトーンの編集要素を生成 → ID (未実装)
(編集要素への操作)
操作には次のようなものがあります。
文法
(すべての型に共通)
<キー>を <ID>に 編集要素にキーを設定 → ・
<タイトル>を <ID>に 編集要素にタイトルを設定 → ・
<サマリ>を <ID>に 編集要素にサマリを設定 → ・
<デフォルト数値>を <ID>に 編集要素にデフォルト数値を設定 → ・
↑1か0を指定 ↑チェックボックス要素のみ
<デフォルト文字列>を <ID>に 編集要素にデフォルト文字列を設定 → ・
↑それ以外の要素
(リスト要素でのみ使うもの)
<タイトル>を <ID>に 編集要素にダイアログタイトルを設定 → ・
<文字列>を <ID>に 編集要素にリスト項目を設定 → ・
まず、すべての型に共通の操作について説明します。
編集要素にキーを設定 は、プリファレンスの(データベースとしての)キー名を編集要素に対応付けるものです。
編集要素にタイトルを設定 は、画面上の編集要素自体の表示文字を指定するものです。
編集要素にサマリを設定 は、画面上の編集要素のすぐ下に表示される補足説明を指定するものです。
編集要素にデフォルト数値を設定 および
編集要素にデフォルト文字列を設定 は、プリファレンス(データベース)の中のその編集要素の値がまだ設定されていない場合の代替値を指定するものです。前者はチェックボックス要素のみで使い、後者はそれ以外の要素で使います。
(編集要素を画面に追加)
最後に、作成した編集要素を編集画面に追加すると画面に反映されます。
チェックボックスの編集要素を表示するプログラム例を示します。
記述例
_編集画面は ID
_賛成要素は ID
プリファレンス編集画面を生成し _編集画面に 入れ
_編集画面タイトルを _編集画面に プリファレンス編集画面にタイトルを設定し
_編集画面で プリファレンス編集画面を有効化し
チェックボックスの編集要素を生成し _賛成要素に 入れ
「checkbox1」を _賛成要素に 編集要素にキーを設定し
「賛成/反対」を _賛成要素に 編集要素にタイトルを設定し
「賛成の方はチェックしてください」を
_賛成要素に 編集要素にサマリを設定し
0を _賛成要素に 編集要素にデフォルト数値を設定し
_賛成要素を _編集画面に 画面に編集要素を追加する
上記の中の「〜にタイトルを設定」、「〜にサマリを設定」、「〜にデフォルト数値を設定」が、画面でどのように対応するかを以下の図で示します。
プリファレンスアクティビティを使うサンプルプログラムをコンパイルしてみます。
既に
ログインからサンプルアプリのコンパイルまで - 1つのサンプルアプリを試しにコンパイル にて1つのサンプルアプリをコンパイルしていたはずですが、ここではプリファレンスを操作するサンプルプログラム (フォルダ名
PreferenceActivity) をコンパイルしてみます。
サンプルプログラム群のうち、次のものを使います。
andrmindSample/
|-- 〜略〜
〜略〜
|-- PreferenceActivity/ ←1アプリで3つのソースファイルを使います
| |-- commonkeys.src ←2つのアクティビティが共通利用する副ソースファイル
| |-- PreferenceActSub.src ←プリファレンスアクティビティ
| `-- SpPreAc.src ←主アクティビティ(これを最初にアップロードする)
〜略〜
まず、
端末との連携(パッケージローダ) での解説に従って、パッケージローダを起動、さらにそこからサービスを起動しておいてください。
次に、Mind for Android のメイン画面で、「新しいアプリの作成」ボタンを押し、その状態で、サンプルプログラムの上記フォルダ内にある SpPreAc.src をアップロードします。アップロードと同時に
SpPreAc というアプリが自動作成されます。
続いて PreferenceActSub.src と commonkeys.src もアップロードします。(この2ファイルは複数選択して同時アップロードできます)
3つのソースファイルがアップロードできたら
上段右枠の中にある PreferenceActSub.src の行の「AC」の種別選択を「PAC」(プリファレンスアクティビティの意味) に変更してください。
次いで「コンパイル」ボタンを押してコンパイルするとアプリ SpPreAc が端末にダウンロード/インストールされるはずです。
インストールが終ったら起動してください。主アクティビティが起動して次の画面が表示されます。
↑
上記で「データの読み出し」ボタンを押してください。
まだプリファレンス(データベース)自体が作成されていない状態ですが、デフォルト値を使って次のような表示が行われます。
↓
読み出したデータの表示にはプログラムを簡単にするため
ログ出力と閲覧の機能を使っています。
次に、トップ画面で「プリファレンス編集」ボタンを押してください。ここでサブアクティビティであるプリファレンスアクティビティ(PreferenceActSub)が起動され、次の画面になります。
↑
上の編集画面で何か適当に入力します。チェックボックス要素だけは直接変更できますが、他の要素は一旦クリックした後に表示されるダイアログで入力することになります。
編集が終ったらAndroidの戻るボタンを押すと、プリファレンスアクティビティが終了し、主アクティビティに制御が戻ります。
このとき主アクティビティは子アクティビティの終了イベントを検出し(処理単語「子アクティビティ終了通知」が呼び出される)、直ちにデータ内容を表示します(ログ表示の機能を使っています)。
↓
読み出したデータの表示にはプログラムを簡単にするため
ログ出力と閲覧の機能を使っています。
Copyright(C) 2000 Scripts Lab. Inc.