在TimePicker更改期间立即更新到Webview
|
我有一个Web视图,通过它我将显示一个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\" />
没有找到相关结果
已邀请:
2 个回复
娠侈脚惮顽
在updateDisplay()方法中。
娠侈脚惮顽