微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在TimePicker更改期间立即更新到Webview

如何解决在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\" />   
    

解决方法

        使用updateDisplay()方法更新用户界面。当前您只是在更新日期。 把这行
 webview.loadUrl(buf.toString());
在updateDisplay()方法中。     ,        尝试放置webview.LoadUrl(\“ javascript:Show(); \”);     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。