Немедленное обновление веб-просмотра во время изменений TimePicker - PullRequest
0 голосов
/ 30 мая 2011

У меня есть веб-просмотр, с помощью которого я собираюсь показать 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 ]

1 голос
/ 30 мая 2011

Обновите интерфейс в методе updateDisplay (). В настоящее время вы просто обновляете дату.Поместите эту строку

 webview.loadUrl(buf.toString());

в методе updateDisplay ().

0 голосов
/ 24 июня 2011

Попробуйте положить webview.LoadUrl ("javascript: Show ();");

...