2011年5月31日火曜日
文字列比較
間違い
正解
間違いでもエラーが出ないので悩ましい。
String x = "android"; if (x == "android") { 処理 }
正解
String x = "android"; if (x.equals("android")) { 処理 }
間違いでもエラーが出ないので悩ましい。
2011年5月29日日曜日
レコードの更新
id 番号を指定してレコードの内容を更新する。
ダウンロード
package com.myDatabase; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.ContentValues; import android.content.Context; public class MyDatabase extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ヘルパークラスのインスタンスを作成します。 MyDBHelper helper = new MyDBHelper(this); //書き込み可能でデータベースを開く //(ここでDBファイルがなかったら作成する(onCreate) SQLiteDatabase db = helper.getWritableDatabase(); Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2)); isEof = c.moveToNext(); } textView1.setText(text); c.close(); db.close(); } @Override protected void onDestroy() { super.onDestroy(); } //レコードの更新ボタンが押された時 public void SetRecordOnClick(View v) { MyDBHelper helper = new MyDBHelper(this); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); //追加するデータ values.put("name", "データ更新"); values.put("age", "100"); db.update("myDatabaseTable",values, "id=1", null); //データの検索 Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2)); isEof = c.moveToNext(); } textView1.setText(text); } //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。 public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(Context context) { super(context, "database.db", null, 1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //データベースのバージョンが変わる場合に呼び出される。 } @Override //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる) public void onCreate(SQLiteDatabase db) { // テームルを作成 db.execSQL( "create table myDatabaseTable("+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "name text not null,"+ "age text"+ ");" ); // Insert文のSQLを実行してレコードを挿入 db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);"); db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);"); } } }
ダウンロード
レコードの削除
id番号を指定してレコードを削除する。
package com.myDatabase; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.ContentValues; import android.content.Context; public class MyDatabase extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ヘルパークラスのインスタンスを作成します。 MyDBHelper helper = new MyDBHelper(this); //書き込み可能でデータベースを開く //(ここでDBファイルがなかったら作成する(onCreate) SQLiteDatabase db = helper.getWritableDatabase(); Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2)); isEof = c.moveToNext(); } textView1.setText(text); c.close(); db.close(); } @Override protected void onDestroy() { super.onDestroy(); } //レコード削除ボタンが押された時 public void DeleteRecordOnClick(View v) { MyDBHelper helper = new MyDBHelper(this); SQLiteDatabase db = helper.getWritableDatabase(); db.delete("myDatabaseTable", "id=1", null); //表示データを更新 Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2)); isEof = c.moveToNext(); } textView1.setText(text); } //レコードを追加ボタンが押された時 public void SetRecordOnClick(View v) { MyDBHelper helper = new MyDBHelper(this); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); //追加するデータ values.put("name", "新しいデータ"); values.put("age", "1"); db.insert("myDatabaseTable", null, values); //データの検索 Cursor c = db.query("myDatabaseTable", new String[] {"id", "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%d : %s : %d歳\r\n", c.getInt(0),c.getString(1), c.getInt(2)); isEof = c.moveToNext(); } textView1.setText(text); } //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。 public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(Context context) { super(context, "database.db", null, 1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //データベースのバージョンが変わる場合に呼び出される。 } @Override //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる) public void onCreate(SQLiteDatabase db) { // テームルを作成 db.execSQL( "create table myDatabaseTable("+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "name text not null,"+ "age text"+ ");" ); // Insert文のSQLを実行してレコードを挿入 db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);"); db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);"); } } }
ダウンロード
レコードの追加
ボタンクリックでレコードを追加してみる
ダウンロード
package com.myDatabase; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.ContentValues; import android.content.Context; public class MyDatabase extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ヘルパークラスのインスタンスを作成します。 MyDBHelper helper = new MyDBHelper(this); //書き込み可能でデータベースを開く //(ここでDBファイルがなかったら作成する(onCreate) SQLiteDatabase db = helper.getWritableDatabase(); Cursor c = db.query("myDatabaseTable", new String[] { "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1)); isEof = c.moveToNext(); } textView1.setText(text); c.close(); db.close(); } @Override protected void onDestroy() { super.onDestroy(); } public void SetRecordOnClick(View v) { MyDBHelper helper = new MyDBHelper(this); SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); //追加するデータ values.put("name", "新しいデータ"); values.put("age", "1"); db.insert("myDatabaseTable", null, values); //データの検索 Cursor c = db.query("myDatabaseTable", new String[] { "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1)); isEof = c.moveToNext(); } textView1.setText(text); } //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。 public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(Context context) { super(context, "database.db", null, 1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //データベースのバージョンが変わる場合に呼び出される。 } @Override //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる) public void onCreate(SQLiteDatabase db) { // テームルを作成 db.execSQL( "create table myDatabaseTable("+ "name text not null,"+ "age text"+ ");" ); // Insert文のSQLを実行してレコードを挿入 db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);"); db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);"); } } }
ダウンロード
レコード検索
プロジェクトを作成して/res/layout/main.xml にTextViewコントロールを配置して、
TextViewコントロール にデータベースの内容を表示する。
SQLiteDatabase.query()メソッドの
第一引数はテーブル名。
第二引数は、取得する列名(カラム名、フィールド名)の配列を指定。
第三引数、第四引数は取得するレコードの条件を指定。
第五引数は、group by句を指定。
第六引数は、Having句を指定。
第七引数は、order by句を指定。
第八引数は、limit句(取得するレコードの上限数)を指定。
使わない場合は、nullを指定。
ダウンロード
TextViewコントロール にデータベースの内容を表示する。
package com.myDatabase; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.Context; public class MyDatabase extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ヘルパークラスのインスタンスを作成します。 MyDBHelper helper = new MyDBHelper(this); //書き込み可能でデータベースを開く //(ここでDBファイルがなかったら作成する(onCreate) SQLiteDatabase db = helper.getWritableDatabase(); Cursor c = db.query("myDatabaseTable", new String[] { "name", "age" }, null, null, null, null, null); boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1)); isEof = c.moveToNext(); } textView1.setText(text); c.close(); db.close(); } @Override protected void onDestroy() { super.onDestroy(); } //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。 public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(Context context) { super(context, "database.db", null, 1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //データベースのバージョンが変わる場合に呼び出される。 } @Override //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる) public void onCreate(SQLiteDatabase db) { // テームルを作成 db.execSQL( "create table myDatabaseTable("+ "name text not null,"+ "age text"+ ");" ); // Insert文のSQLを実行してレコードを挿入 db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);"); db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);"); } } }
SQLiteDatabase.query()メソッドの
第一引数はテーブル名。
第二引数は、取得する列名(カラム名、フィールド名)の配列を指定。
第三引数、第四引数は取得するレコードの条件を指定。
第五引数は、group by句を指定。
第六引数は、Having句を指定。
第七引数は、order by句を指定。
第八引数は、limit句(取得するレコードの上限数)を指定。
使わない場合は、nullを指定。
ダウンロード
2011年5月28日土曜日
データベースを確認-adbシェル
コマンドプロンプトを開いて
D:\androidSDKをインストールした場所\platform-tools>adb shell
dataフォルダの中のdata に移動
# cd data/data
パッケージ名/datadases に移動
# cd com.myDatabase/databases
SQLiteを起動する。
# sqlite3 database.db
sqlite3 database.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
テーブル一覧を表示する
sqlite> .table
.table
android_metadata myDatabaseTable
テーブルデータの確認
sqlite> select * from myDatabaseTable;
select * from myDatabaseTable;
閨門セウ螟ェ蟄酢10
螟冗岼貍ア遏ウ|20
sqlite>
参考:
pwd:いまいるディレクトリの確認
ls:フォルダ内のファイル名一覧
D:\androidSDKをインストールした場所\platform-tools>adb shell
dataフォルダの中のdata に移動
# cd data/data
パッケージ名/datadases に移動
# cd com.myDatabase/databases
SQLiteを起動する。
# sqlite3 database.db
sqlite3 database.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
テーブル一覧を表示する
sqlite> .table
.table
android_metadata myDatabaseTable
テーブルデータの確認
sqlite> select * from myDatabaseTable;
select * from myDatabaseTable;
閨門セウ螟ェ蟄酢10
螟冗岼貍ア遏ウ|20
sqlite>
参考:
pwd:いまいるディレクトリの確認
ls:フォルダ内のファイル名一覧
データベースを確認-PupSQLite
DDMSパースペクティブ を表示させて
ファイル・エクスプローラを選択します。
data/data/パッケージ名/databases/ファイル名 を選択します。
右上のフロッピーのアイコンをクリックしてファイルを保存します。
PupSQLite をダウンロードしてきます。
PupSQLite を起動させてデータベースファイルを開きます。
データベースの作成
データベースを開いて確認する為にファイル名を指定してデータベースを作成する。
package com.myDatabase; import android.app.Activity; import android.os.Bundle; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.content.Context; public class MyDatabase extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ヘルパークラスのインスタンスを作成します。 MyDBHelper helper = new MyDBHelper(this); //書き込み可能でデータベースを開く //(ここでDBファイルがなかったら作成する(onCreate) helper.getWritableDatabase(); helper.getReadableDatabase().close(); } @Override protected void onDestroy() { super.onDestroy(); } //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。 public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(Context context) { super(context, "database.db", null, 1); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //データベースのバージョンが変わる場合に呼び出される。 } @Override //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる) public void onCreate(SQLiteDatabase db) { // テームルを作成 db.execSQL( "create table myDatabaseTable("+ "name text not null,"+ "age text"+ ");" ); // Insert文のSQLを実行してレコードを挿入 db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);"); db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);"); } } }
Activityのライフサイクル
onCreate(Bundle)
アクティビティが最初に起動する時に呼ばれます。
onSaveInstanceStateメソッドで保存された情報がある場合は、引数のBundleにその情報が渡されてきます。
onStart()
アクティビティが表示される直前に呼び出されます。
onResume()
アクティビティがユーザーの入力を受け付けるようになる時に呼び出されます。
メディアの再生などを開始するのによいタイミングです。
onPause()
アクティビティがバックグラウンドになる直前に呼び出されます。このメソッドが呼ばれた後はメモリが少なくなるとアプリケーションが何の通知もなく破棄されることがあるので、このタイミングで設定値などの保存を行うと良いでしょう。
onStop()
アクティビティがしばらく使われなくなった時に呼び出されます。ほかのアクティビティが起動してバックグラウンドになった時や、アプリケーションが終了する直前に呼び出されます。しかし、onPauseの説明で書いたようにメモリが少なくなった場合はonStopやonDestroyが呼び出されずにプロセスが破棄される場合があるので注意が必要です。
onRestart()
onStopが呼ばれた後に、ほかのアクティビティが終了する等で、再びアクティビティが表示される時に呼び出されます。
onDestroy()
アクティビティが破棄される直前に呼び出されます。
onStopの説明で書いたように呼び出されないこともあるので注意が必要です。
onSaveInstanceState(Bundle)
インスタンスの状態を保存すべきタイミングで呼び出されます。ここで引数のBundleに対して値を保存します。いったんアプリケーションのプロセスが終了していても、保存した値はonCreateメソッドの引数に引き継がれるので、再度起動した時にBundleで渡される値を利用して状態を復元させることができます。
アクティビティが最初に起動する時に呼ばれます。
onSaveInstanceStateメソッドで保存された情報がある場合は、引数のBundleにその情報が渡されてきます。
onStart()
アクティビティが表示される直前に呼び出されます。
onResume()
アクティビティがユーザーの入力を受け付けるようになる時に呼び出されます。
メディアの再生などを開始するのによいタイミングです。
onPause()
アクティビティがバックグラウンドになる直前に呼び出されます。このメソッドが呼ばれた後はメモリが少なくなるとアプリケーションが何の通知もなく破棄されることがあるので、このタイミングで設定値などの保存を行うと良いでしょう。
onStop()
アクティビティがしばらく使われなくなった時に呼び出されます。ほかのアクティビティが起動してバックグラウンドになった時や、アプリケーションが終了する直前に呼び出されます。しかし、onPauseの説明で書いたようにメモリが少なくなった場合はonStopやonDestroyが呼び出されずにプロセスが破棄される場合があるので注意が必要です。
onRestart()
onStopが呼ばれた後に、ほかのアクティビティが終了する等で、再びアクティビティが表示される時に呼び出されます。
onDestroy()
アクティビティが破棄される直前に呼び出されます。
onStopの説明で書いたように呼び出されないこともあるので注意が必要です。
onSaveInstanceState(Bundle)
インスタンスの状態を保存すべきタイミングで呼び出されます。ここで引数のBundleに対して値を保存します。いったんアプリケーションのプロセスが終了していても、保存した値はonCreateメソッドの引数に引き継がれるので、再度起動した時にBundleで渡される値を利用して状態を復元させることができます。
2011年5月27日金曜日
設定されたデータを見てみる
エミュレータが起動している状態でDDMSパースペクティブを選択する。
Eclipse で設定されたデータが保存されているファイルを表示する。
ファイル・エクスプローラを選択する。
メニュー選択から設定画面へ の記事で作成されたファイルを選択してみる。
data/data/com.menuPreference/shared_frefs/com.menuPreference_preferences.xml
右上のフロッピーアイコンをクリックしてパソコンのローカルフォルダに保存する。
ローカルフォルダに保存したファイルを Eclipse にドラッグして表示してみた。
Eclipse で設定されたデータが保存されているファイルを表示する。
ファイル・エクスプローラを選択する。
メニュー選択から設定画面へ の記事で作成されたファイルを選択してみる。
data/data/com.menuPreference/shared_frefs/com.menuPreference_preferences.xml
右上のフロッピーアイコンをクリックしてパソコンのローカルフォルダに保存する。
ローカルフォルダに保存したファイルを Eclipse にドラッグして表示してみた。
メニュー選択から設定画面へ
Android プロジェクトを作成する
プロジェクト名:MenuPreference
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:MenuPreference
パケージ名:com.menuPreference
Create Activity:MenuPreference
Min SDK Version:8
メニューボタンが押された時のメニューを作る
res フォルダの中にmenuフォルダを作成する。
menuフォルダを右クリックして、新規 から Android Xml File を選択する。
ファイル名:menu_list.xml
Item を追加する。
Id:@+id/item1
Title:設定
Visible:true
Enabled:true
MenuPreference.java にメニューボタンが押された時の動作を記入する。
MenuPreference.java のソース
設定をクリックしても何も起きません。
設定を押した時に表示する画面をxmlで作ります。
res フォルダの中にxmlフォルダを作成する。
menuフォルダを右クリックして、新規 から Android Xml File を選択する。
ファイル名:preference.xml
what type of resource would you like to create? でPreferenceを選択する。
preference.xmlを編集する 追加ボタンを押して PreferenceCategoryを追加する PreferenceCategory の中に CheckBoxPreference を追加する。
設定画面を表示するアクティビティを作る
/src/com.menuPreference を選択して右クリックして 新規からクラスを選択する。
ファイル名: MenuList.java
MenuList.java のソース
アクティビティを作成したら忘れないうちに
AndroidManifest.xmlに作成したアクティビティを追加する。
AndroidManifest.xml を設定 にしたら
下のタブからアプリケーションを選択する。
追加されたActivity を選択してName* の参照をクリックする。
Activity を選択してOKをクリックする。
作成したMenuList を選択してOKをクリックする
MenuList が追加されました。
メニューボタンを押して表示されたメニューを選択した時の動作を設定する。
設定をタップしたら設定画面が表示されるようにする。
MenuPreference.java にソースを追加します。
MenuPreference.java のソース
動作確認
チェックボックスにチェックも入れられ、
うまく動いている様です。
ダウンロード
プロジェクト名:MenuPreference
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:MenuPreference
パケージ名:com.menuPreference
Create Activity:MenuPreference
Min SDK Version:8
メニューボタンが押された時のメニューを作る
res フォルダの中にmenuフォルダを作成する。
menuフォルダを右クリックして、新規 から Android Xml File を選択する。
ファイル名:menu_list.xml
Item を追加する。
Id:@+id/item1
Title:設定
Visible:true
Enabled:true
MenuPreference.java にメニューボタンが押された時の動作を記入する。
MenuPreference.java のソース
package com.menuPreference; import android.app.Activity; import android.os.Bundle; public class MenuPreference extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } // オプションメニューの生成 @Override public boolean onCreateOptionsMenu(android.view.Menu menu){ super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.menu_list,menu); return true; } }実行画面
設定をクリックしても何も起きません。
設定を押した時に表示する画面をxmlで作ります。
res フォルダの中にxmlフォルダを作成する。
menuフォルダを右クリックして、新規 から Android Xml File を選択する。
ファイル名:preference.xml
what type of resource would you like to create? でPreferenceを選択する。
preference.xmlを編集する 追加ボタンを押して PreferenceCategoryを追加する PreferenceCategory の中に CheckBoxPreference を追加する。
設定画面を表示するアクティビティを作る
/src/com.menuPreference を選択して右クリックして 新規からクラスを選択する。
ファイル名: MenuList.java
MenuList.java のソース
package com.menuPreference; import android.os.Bundle; import android.preference.PreferenceActivity; public class MenuList extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); } }
アクティビティを作成したら忘れないうちに
AndroidManifest.xmlに作成したアクティビティを追加する。
AndroidManifest.xml を設定 にしたら
下のタブからアプリケーションを選択する。
追加されたActivity を選択してName* の参照をクリックする。
Activity を選択してOKをクリックする。
作成したMenuList を選択してOKをクリックする
MenuList が追加されました。
メニューボタンを押して表示されたメニューを選択した時の動作を設定する。
設定をタップしたら設定画面が表示されるようにする。
MenuPreference.java にソースを追加します。
MenuPreference.java のソース
package com.menuPreference; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; public class MenuPreference extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } // オプションメニューの生成 @Override public boolean onCreateOptionsMenu(android.view.Menu menu){ super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.menu_list,menu); return true; } //メニーを選択した時の動作 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.item1: Intent intent = new Intent(); intent.setClassName(this, "com.menuPreference.MenuList"); startActivity(intent); return true; default: break; } return false; } }
動作確認
チェックボックスにチェックも入れられ、
うまく動いている様です。
ダウンロード
2011年5月26日木曜日
メニュータップでアクション
xmlファイルで作成を修正して、
メニューがタップされたら終了するプログラムを作ってみる。
Menu.java のソース
Menu.java のソース
package com.Menu; import android.app.Activity; import android.os.Bundle; import android.view.MenuItem; public class Menu extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /** * オプションメニューの生成 */ @Override public boolean onCreateOptionsMenu(android.view.Menu menu){ super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.list,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.item1: finish(); break; default: break; } return super.onOptionsItemSelected(item); } }
メニューをxmlファイルで作成
Android プロジェクトを作成
res フォルダの中にmenuフォルダを作成する。
menuフォルダを右クリックして、新規 から Android Xml File を選択する。
ファイル名:list.xml
Item を追加する。
Id:@+id/item1
Title:メニュー1
Icon:@android:drawable/ic_menu_edit
Visible:true
Enabled:true
Menu.java のソース
ダウンロード
res フォルダの中にmenuフォルダを作成する。
menuフォルダを右クリックして、新規 から Android Xml File を選択する。
ファイル名:list.xml
Item を追加する。
Id:@+id/item1
Title:メニュー1
Icon:@android:drawable/ic_menu_edit
Visible:true
Enabled:true
Menu.java のソース
package com.Menu; import android.app.Activity; import android.os.Bundle; public class Menu extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /** * オプションメニューの生成 */ @Override public boolean onCreateOptionsMenu(android.view.Menu menu){ super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.list,menu); return true; } }
ダウンロード
日付設定画面を出す
DateSet.java のソース
package com.DateSet; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.view.View; public class DateSet extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void setDatePrefs(View v) { Intent intent = new Intent(Settings.ACTION_DATE_SETTINGS); startActivity(intent); } }
ダウンロード
画面移動の際に値を送る
画面移動の記事を修正する。
res/values/strings.xml にsend_string を設定する
SecondScreen.javaのソース
subactivity.putExtra(this.getString(R.string.send_string), "送られる文字列");
の1行が加わっただけです。
受け取る側
SubActivity.javaのソース
ダウンロード
res/values/strings.xml にsend_string を設定する
SecondScreen.javaのソース
package com.secondScreen; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class SecondScreen extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void ButtonOnClick(View v){ Intent subactivity = new Intent(this,com.secondScreen.SubActivity.class); subactivity.putExtra(this.getString(R.string.send_string), "送られる文字列"); startActivityForResult(subactivity, R.id.button1); } }画面移動のソースに
subactivity.putExtra(this.getString(R.string.send_string), "送られる文字列");
の1行が加わっただけです。
受け取る側
SubActivity.javaのソース
package com.secondScreen; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class SubActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sub); //送られてくる文字列を受け取る String displayMessage = getIntent().getStringExtra(this.getString(R.string.send_string)); //表示されるテキストに送られてきた文字列を設定 TextView message = (TextView)this.findViewById(R.id.sub_text); message.setText(displayMessage); } }
ダウンロード
画面遷移(移動)
アプリケーション内で別アクティビティを起動させます。
プロジェクトを作成
プロジェクト名:SecondScreen
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:SecondScreen
パケージ名:com.secondScreen
Create Activity:SecondScreen
Min SDK Version:8
res/layout/main.xml にボタンを配置
ボタンが押された時の動作をOn click に設定する。
設定する値はButtonOnClick
res/layout/main.xml をコピーしてsub.xml を作成し、内容を変更して第2画面を作る。
最初の画面のアクティビティSecondScreen.java をコピーして
SubActivity を作成し、ソースを変更し第2画面のアクティビティを作る。
変更する部分:
setContentView(R.layout.main); を
setContentView(R.layout.sub); に変更する。
AndroidManifest.xml にSubActivityを加える
SecondScreen.java にボタンが押された時の動作を設定する。
SecondScreen.javaのソース
sub.xmlのボタンに android:onClick="ButtonOnClick" を付け加えるのを忘れないように ダウンロード
プロジェクトを作成
プロジェクト名:SecondScreen
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:SecondScreen
パケージ名:com.secondScreen
Create Activity:SecondScreen
Min SDK Version:8
res/layout/main.xml にボタンを配置
ボタンが押された時の動作をOn click に設定する。
設定する値はButtonOnClick
res/layout/main.xml をコピーしてsub.xml を作成し、内容を変更して第2画面を作る。
最初の画面のアクティビティSecondScreen.java をコピーして
SubActivity を作成し、ソースを変更し第2画面のアクティビティを作る。
変更する部分:
setContentView(R.layout.main); を
setContentView(R.layout.sub); に変更する。
AndroidManifest.xml にSubActivityを加える
SecondScreen.java にボタンが押された時の動作を設定する。
SecondScreen.javaのソース
package com.secondScreen; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class SecondScreen extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void ButtonOnClick(View v){ Intent subactivity = new Intent(this,com.secondScreen.SubActivity.class); startActivityForResult(subactivity, R.id.button1); } }
sub.xmlのボタンに android:onClick="ButtonOnClick" を付け加えるのを忘れないように ダウンロード
サウンドファイルを指定したインテント
プロジェクト名:SelectMusic
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:SelectMusic
パケージ名:com.selectMusic
Create Activity:SelectMusic
Min SDK Version:8
ダウンロード
ボタンに表示するテキストは、
res/values/strings.xml で設定
ボタンがタップされた時の動作は
res/layout/main.xml のOn click でイベントで設定
SelectMusic.java
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:SelectMusic
パケージ名:com.selectMusic
Create Activity:SelectMusic
Min SDK Version:8
ダウンロード
ボタンに表示するテキストは、
res/values/strings.xml で設定
ボタンがタップされた時の動作は
res/layout/main.xml のOn click でイベントで設定
SelectMusic.java
package com.selectMusic; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class SelectMusic extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void selectMusic(View v){ Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); startActivity(Intent.createChooser(intent, "音楽ファイルを選択")); } }
2011年5月25日水曜日
ウェブブラウザーを起動する-ボタンで
プロジェクト名:WebBrowser
ビルドターゲット:Android 2.2
プロパティー
アプリケーション名:WebBrowser
パケージ名:com.webBrowser
Create Activity:WebBrowser
Min SDK Version:8
res/layout/main.xml に
ボタンを追加する。
ボタンのプロパティー設定で
ボタンに表示する文字を設定し、
On click でイベントを関連付ける。
res/values/strings.xml にボタンに表示する文字とブラウザで開くURLを設定する。
package com.webBrowser; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; public class WebBrowser extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void webOpen(View v) { Uri myUri = Uri.parse(this.getString(R.string.myURL)); Intent webIntent = new Intent(Intent.ACTION_VIEW, myUri); startActivity(webIntent); } }
ダウンロード
OnClickListenerを使う
package com.Btn001; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class Btn001 extends Activity implements OnClickListener { private TextView message; private Button setButton; // private Button setButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); message = (TextView) this.findViewById(R.id.Message); setButton = (Button) this.findViewById(R.id.SetButton); setButton.setOnClickListener(this); } @Override public void onClick(View v) { /** ボタンを押したときの処理 **/ if ( v == setButton) { message.setText("新しいテキスト"); } } }
EventListenerを定義する方法
setButtonに対して、OnClickListenerを定義する方法
package com.Btn001; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class Btn001 extends Activity { private TextView message; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); message = (TextView)this.findViewById(R.id.Message); Button setButton = (Button) this.findViewById(R.id.SetButton); setButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /** ボタンを押したときの処理 **/ message.setText("新しいテキスト"); } }); } }
ボタンを押してテキスト変更-On clickを使う
javaファイルの変更
XMLレイアウトの
テキストのプロパティー ID に Message を設定する
ボタンのプロパティ On click に SetButtonOnClick を設定する
package com.Btn001; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class Btn001 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void SetButtonOnClick(View v) { TextView message; message = (TextView)this.findViewById(R.id.Message); message.setText("新しいテキスト"); } }
XMLレイアウトの
テキストのプロパティー ID に Message を設定する
ボタンのプロパティ On click に SetButtonOnClick を設定する
2011年5月24日火曜日
ボタンに表示する文字の変更
プロパティーで直接指定する方法
アウトラインでbutton1をダブルクリックしてプロパティーを表示して、Text プロパティーの値を修正する。
res/values/strings.xml ファイルから読み込む方法
パッケージエクスプローラでstrings.xmlをダブルクリックして編集可能にする。
追加ボタンをクリックする。
String をせんたくして OK をクリックする。
Name* に btn_name
Value* に ボタン
と入力してファイルを保存する。
アウトラインでbutton1 を右クリックする。
btn_name を選択して OK をクリックする
テキストプロパティーが@string/btn_name に変わってます。
ボタンの追加
Andriod プロジェクトを作成する。
プロジェクト名:btn001
内容
ワークスペース内に新規プロジェクトを作成
デフォルト・ロケーションの使用
ビルド・ターゲット
Android 2.2
プロパティー
アプリケーション名:Btn001
パッケージ名:com.Btn001
Create Activity:Btn001
Min SDK Version:8
resフォルダの中のlayoutフォルダの中のmain.xmlを開いて
アウトラインを確認すると
LinearLayout の中にTextViewが作成されています。
パレットのForm Widgets の中からボタンを画面の上にドラッグします。
LinearLayout の中にTextViewの下にbutton1が追加されました。
ボタンが追加されました
プロジェクト名:btn001
内容
ワークスペース内に新規プロジェクトを作成
デフォルト・ロケーションの使用
ビルド・ターゲット
Android 2.2
プロパティー
アプリケーション名:Btn001
パッケージ名:com.Btn001
Create Activity:Btn001
Min SDK Version:8
resフォルダの中のlayoutフォルダの中のmain.xmlを開いて
アウトラインを確認すると
LinearLayout の中にTextViewが作成されています。
パレットのForm Widgets の中からボタンを画面の上にドラッグします。
LinearLayout の中にTextViewの下にbutton1が追加されました。
ボタンが追加されました
2011年5月23日月曜日
自分でAndroidプロジェクトを作成する
Android Developers のResources のHello World を参考にやってみる。
ファイル-新規-Androidプロジェクト でプロジェクトを作成
実行-Andoroidプロジェクト でシュミレーターを実行させる
MENUボタンをクリック
下の画面が表示されるまで約4分かかった。
ファイル-新規-Androidプロジェクト でプロジェクトを作成
実行-Andoroidプロジェクト でシュミレーターを実行させる
MENUボタンをクリック
下の画面が表示されるまで約4分かかった。
登録:
投稿 (Atom)