У меня есть веб-просмотр, с помощью которого я собираюсь показать TimePicker и получить значение выбранного времени.
Но это не самое последнее выбранное время, оно всегда получает предыдущее. Я знаю, что это для операции обратного вызова на стороне Android, но как я могу исправить эту проблему.
Мой код ниже:
public class WebViewTest extends Activity {
/** Called when the activity is first created. */
WebView webview;
private int mHour;
private int mMinute;
static final int TIME_DIALOG_ID = 0;
String mTimeDisplay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.addJavascriptInterface(new JavaScriptInterface(), "Android");
WebSettings webSettings = webview.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/Test.html");
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mHour, mMinute, false);
}
return null;
}
// updates the time we display in the TextView
private void updateDisplay() {
mTimeDisplay= new StringBuilder().append(pad(mHour)).append(":").append(pad(mMinute)).toString();
}
private String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateDisplay();
StringBuilder buf=new StringBuilder("javascript:settime(");
buf.append(mTimeDisplay);
buf.append(")");
webview.loadUrl(buf.toString());
}
};
public class JavaScriptInterface {
public String ShowTimePicker()throws JSONException {
showDialog(TIME_DIALOG_ID);
JSONObject json=new JSONObject();
json.put("lat", mTimeDisplay);
return(json.toString());
}
}
}
А вот и мой код HTML и JS:
<script type="text/javascript">
function settime(lat) {
document.getElementById("lat").innerHTML=lat;
}
function Show()
{
//var t=Android.ShowTimePicker();
var location=JSON.parse(Android.ShowTimePicker());
document.getElementById("lat").innerHTML=location.lat;
}
</script>
Time: <span id="lat">(unknown)</span>
<input type="button" onclick="Show()" value="Show" />