大垣様
Donです。
返信が遅くなりまして申し訳ありません。
> 数字の入力後に、ソフトキーボードのエンターキーを入力しないと反映しないと気づきました。
> したがって、エリアのフォーカスが移動した場合や、一定時間経過後に、内部的に、
> エンターキーを押したことにすれば、良いのではないかと思います。
なるほど確認してみましたところ、時表示のところから、分表示のところへフォーカスが移動した場合にも
キーボード入力が反映されるようです。
ためしに、新たにEditTextを作成してみて、
Button押下した際に、フォーカスをチェンジしてみたところ、
値が反映されていました。
実際のアプリではほかにEditTextがないので
どうやって対応するべきか今から考えて見ます。
(ボタンにフォーカスってできるのでしょうか・・・?)
ありがとうございました。
以下にテスト用のコードを記載しておきます。
////////////main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/
android"
android:id="@+id/nmea_gpgsv_layout" android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:id="@+id/et01" android:layout_width="fill_parent"
android:layout_height="wrap_content">
</EditText>
<TimePicker android:id="@+id/tp01"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TimePicker>
<Button android:id="@+id/bt01" android:layout_width="75dp"
android:layout_height="wrap_content"
android:text ="toast" >
</Button>
</LinearLayout>
////////////testView.java
package com.itservice.testView;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
public class testView extends Activity {
/** Called when the activity is first created. */
private TimePicker timePicker;
private EditText editText;
private Button button;
private int myhour;
private int myminute;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* EditText */
editText = (EditText)findViewById(R.id.et01);
/* Button */
button = (Button)findViewById(R.id.bt01);
button.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
editText.requestFocus(); /**/
Toast.makeText(testView.this, "H:" +
Integer.toString(myhour) + " M:" + Integer.toString(myminute),
Toast.LENGTH_SHORT).show();
}
});
/* TimePicker */
timePicker = (TimePicker) findViewById(R.id.tp01);
timePicker.setIs24HourView(true);
timePicker.setCurrentHour(myhour);
timePicker.setCurrentMinute(myminute);
timePicker.setOnTimeChangedListener(new
TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay,
int minute) {
myhour = hourOfDay;
myminute = minute;
}
});