
2012.01.15 夢見ヶ崎動物公園、加瀬山、夕日に遊ぶ子供
- 自由研究に戻る
- Menu表示
DatePickerのタイトルを変更する
android のトレーニングを始めてみます、多くのサイトがありますが、やってみます。DatePickeのタイトル表示変更です。

Fig.1 タイトル、ボタンの表示変更と、説明の記述の追加
DatePickerのタイトルのデフォルト「日付設定」の「設定」ボタンの表示を変更してみます
また、メッセージを追加します。
android プロジェクトで作成したファイルに下記を書き込みます。
・datePickerDialog.setTitle("生年月日");
・datePickerDialog.setMessage("生年月日を入力してください");
/////////// javaファイル///////////////////////////////////
package menutest.app;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.content.DialogInterface;
public class MenutestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 今日の日付を取得
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// DatePickerDialogを表示
DatePickerDialog datePickerDialog = new DatePickerDialog(this,null, year, month, day);
datePickerDialog.setTitle("生年月日");
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE,"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Positive Button がクリックされた時の動作 null);
}
}
);
datePickerDialog.setMessage("生年月日を入力してください");
datePickerDialog.show();
}
}
参考サイト
DatePickeのタイトル
xmlでのレイアウト作成まとめ
DatePickerDialogで日付を入力する
PreferenceScreenへDatePicker表示
android のトレーニング、PreferenceScreenからDatePickerを表示するときに
・INTENTを使って別画面に表示
・OnPreferenceClickを使って同じ画面に表示
の確認をしてみます。
(1)main Activityの画面
ButtonをClickで(2)の画面をIntentで起動します。
・button.setOnClickListener(new View.OnClickListener() を組み込みます。
・startActivityで次の(2)の画面を開きます。

Fig.2 メイン画面
///// java ファイル/////////////////////////////////
package menuintent.app;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class MenuIntentActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
startActivity(new Intent(getApplicationContext(), menuintent.app.menuintent_sub_PreferenceActivity.class));
}
});
}
}
(2)intentで起動されたPreferenceActivityの画面

Fig.3 PreferenceScreen画面です、xmlファイルは下記です。
注意点はandroid:keyを全部設定しないとうまく動きませんでした。使わなくても設定しないと実行時にエラーが発生しました。
///////// xmlファイル /////////
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:summary="設定項目です" android:title="設定">
<EditTextPreference android:title="連絡先" android:summary="住所を記入ください"
android:key="edit_text_1" />
<EditTextPreference android:title="職業" android:summary="仕事内容を書いてください"
android:key="edit_text_2" />
<PreferenceScreen android:title="生年月日(1)" android:summary="別画面(intent確認)で開きます"
android:key="pref_intent" >
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="menuintent.app"
android:targetClass="menuintent.app.menu_datepicker" >
</intent>
</PreferenceScreen>
<Preference android:title="生年月日(2)"
android:summary="ポップアップ画面(onPreferenceClick確認)で開きます"
android:key="prefKey" >
</Preference>
</PreferenceScreen>
///////////////////////////
java ファイルは下記です、
setOnPreferenceClickListenerも実装しています。
public boolean onPreferenceClickを@Override してます。
///////////////////////////
package menuintent.app;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
public class menuintent_sub_PreferenceActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.menu_preference);
// Preferenceのkey取得
Preference prefclick = (Preference) findPreference("prefKey");
//OnPreferenceClickListenerをハンドルする
prefclick.setOnPreferenceClickListener(new OnPreferenceClickListener(){
@Override
public boolean onPreferenceClick(Preference preference) {
return onPreferenceClick1(preference);
}
});
}
public boolean onPreferenceClick1(Preference preference){
// 今日の日付を取得
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// DatePickerDialogを表示
DatePickerDialog datePickerDialog = new DatePickerDialog(this,null, year, month, day);
datePickerDialog.setTitle("onPreferenceClick確認");
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE,"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Positive Button がクリックされた時の動作 null);
}
}
);
datePickerDialog.setMessage("生年月日を入力してください");
datePickerDialog.show();
return true;
}
}
(3)PreferenceScreenからINTENTで起動された別のActibityにDate Pickerを表示

Fig.4
////////////////////////////////////////////////
別activityのjavaファイルは下記になります。
////////////////////////////////////////////////
package menuintent.app;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.os.Bundle;
public class menu_datepicker extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_datepicker);
setTitle("intent確認");
// 今日の日付を取得
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// DatePickerDialogを表示
DatePickerDialog datePickerDialog = new DatePickerDialog(this,null, year, month, day);
datePickerDialog.setTitle("Intent確認");
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE,"OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Positive Button がクリックされた時の動作 null);
}
}
);
datePickerDialog.setMessage("生年月日を入力してください");
datePickerDialog.show();
}
}
(4)PreferenceScreenからonPreferenceClickLを用いて同じPreferenceScreenの画面にDatePickerを表示
プログラムは上記の(2)intentで起動されたPreferenceActivityの画面に実装しています。

Fig.5,ポップアップで表示されます。
参考サイト
Android アプリ設定画面を作成する PreferenceScreen(別アクティビティ)
PreferenceActivityからIntentを呼び出す
DatePickerにソフトキーによる数字入力
android のトレーニング、ソフトキーボードが有効にならないのは何故なの、有効にするにはどうすればいいのでしょう。

Fig.6,ソフトキーボードが表示されます。
datepickerにはソフトキーボードが実装されているので、特別にプログラムを作る必要はないようです。
下記サイトにあるように、SDKのエミュレータで確認(実行)するためには、AVD Managerを作る時に、キーボード無しに設定して実行するようです。
すると、Date pickerの数字をダブルクリックするとソフトキーボードが現れました。
参考サイト
Android ダイアログ表示時にソフトキーボードを出す
EditTextを持つダイアログ(AlertDialog)が表示された時に自動的にソフトキーボードを表
Android setSoftInputMode()をエミュレータで試すときは hw.keyboard を no にしましょう。