общедоступный класс VersionComparator {/ * цикл через обе строки версии *, а затем проведите внутреннюю строку к компьютеру значение val для int * для каждого целого числа read, do num * 10 + & lt; integer read & gt; * и остановитесь, когда натыкаетесь на. * Когда '.' встречается ... * см. if '.' встречается для обеих строк *, если он затем сравнивает num1 и num2 *, если num1 == num2 ... итерация по p1 ++, p2 ++ * else return (num1 & gt; num2)? 1: -1 * Если оба конца строки затем сравнивают (num1, num2), возвращают 0, 1, -1 * else, перебирают более длинную строку и * проверяют, имеют ли они только завершающие нули. * Если у нее есть только завершающие нули, тогда возвращаем 0 * else это больше, чем другая строка * / public static int compareVersions (String v1, String v2) {int num1 = 0; int num2 = 0; int p1 = 0; int p2 = 0; while (p1 & lt; v1.length () & amp; p2 & lt; v2.length ()) {num1 = Integer.parseInt (v1.charAt (p1) + ""); num2 = Integer.parseInt (v2.charAt (p2) + ""); p1 ++; p2 ++; (p1 & lt; v1.length () & amp; p2 & lt; v2.length () & amp; v1.charAt (p1)! = '.' & amp; v2.charAt (p2)! = ' . ') {if (p1 & lt; v1.length ()) num1 = num1 * 10 + Integer.parseInt (v1.charAt (p1) + ""); if (p2 & lt; v2.length ()) num2 = num2 * 10 + Integer.parseInt (v2.charAt (p2) + ""); p1 ++; p2 ++; } if (p1 & lt; v1.length () & amp; p2 & lt; v2.length () & amp; v1.charAt (p1) == '.' & amp; v2.charAt (p2) == '.') {if ((num1 ^ num2) == 0) {p1 ++; p2 ++; } else return (num1 & gt; num2)? 1: -1; } else if (p1 & lt; v1.length () & amp; p2 & lt; v2.length () & amp; v1.charAt (p1) == '.') return -1; else if (p1 & lt; v1.length () & amp; p2 & lt; v2.length () & amp; v2.charAt (p2) == '.') return 1; } if (p1 == v1.length () & amp; p2 == v2.length ()) {if ((num1 ^ num2) == 0) return 0; else return (num1 & gt; num2)? 1: -1; } else if (p1 == v1.length ()) {if ((num1 ^ num2) == 0) {while (p2 & lt; v2.length ()) {if (v2.charAt (p2)! = '. '& amp; v2.charAt (p2)! =' 0 ') return -1; p2 ++; } return 0; } else return (num1 & gt; num2)? 1: -1; } else {if ((num1 ^ num2) == 0) {while (p1 & lt; v1.length ()) {if (v1.charAt (p1)! = '.' & amp; v1.charAt (p1) ! = '0') return 1; p1 ++; } return 0; } else return (num1 & gt; num2)? 1: -1; }} public static void main (String [] args) {System.out.println (compareVersions ("11.23", "11.21.1.0.0.1.0") ^ 1); System.out.println (compareVersions ("11.21.1.0.0.1.0", "11.23") ^ -1); System.out.println (compareVersions ("11.23", "11.23.0.0.0.1.0") ^ -1); System.out.println (compareVersions ("11.2", "11.23") ^ -1); System.out.println (compareVersions ("11.23", "11.21.1.0.0.1.0") ^ 1); System.out.println (compareVersions ("1.21.1.0.0.1.0", "2.23") ^ -1); System.out.println (compareVersions ("11.23", "11.21.1.0.0.1.0") ^ 1); System.out.println (compareVersions ("11.23.0.0.0.0.0", "11.23") ^ 0); System.out.println (compareVersions ("11.23", "11.21.1.0.0.1.0") ^ 1); System.out.println (compareVersions ("1.5.1.3", "1.5.1.3.0") ^ 0); System.out.println (compareVersions ("1.5.1.4", "1.5.1.3.0") ^ 1); System.out.println (compareVersions ("1.2.1.3", "1.5.1.3.0") ^ -1); System.out.println (compareVersions ("1.2.1.3", "1.22.1.3.0") ^ -1); System.out.println (compareVersions ("1.222.1.3", "1.22.1.3.0") ^ 1); }}
Я использую что-то подобное в своих действиях с помощью WebViews:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
Edit:
Чтобы этот код работал, вам нужно добавить поле в Activity
содержащий WebView:
private WebView mWebView;
Инициализировать его в методе onCreate()
, и вам должно быть хорошо идти.
mWebView = (WebView) findViewById(R.id.webView);
Вы должны использовать следующие библиотеки в своем классе: onBackKeyPressed. canGoBack () проверяет, может ли веб-просмотр ссылаться на предыдущую страницу. Если это возможно, используйте функцию goBack () для ссылки на предыдущую страницу (вернитесь назад).
@Override
public void onBackPressed() {
if( mWebview.canGoBack()){
mWebview.goBack();
}else{
//Do something else. like trigger pop up. Add rate app or see more app
}
}
Почему бы не использовать onBackPressed()
?
@Override
public void onBackPressed()
{
// super.onBackPressed(); Do not call me!
// Go to the previous web page.
}
Веб-просмотр в действии, Ниже код работал для меня, Завершить действие после загрузки Url в webview.in onbackpressed он переходит к предыдущему действию
webView = (WebView) findViewById(R.id.info_webView);
webView.loadUrl(value);
finish();
Если вы используете Android 2.2 и выше (сейчас это большинство устройств), следующий код даст вам то, что вы хотите.
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
android:noHistory="true"
в <activity>
, который вы хотите, в AndroidManifest.xml
– LocalPCGuy
27 September 2013 в 22:48
Фокусировка также должна быть проверена в onBackPressed
@Override
public void onBackPressed() {
if (mWebview.isFocused() && mWebview.canGoBack()) {
mWebview.goBack();
} else {
super.onBackPressed();
finish();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
// If it wasn't the Back key or there's no web page history, bubble up to the default
// system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}
здесь код с подтверждением выхода:
@Override
public void onBackPressed()
{
if(webView.canGoBack()){
webView.goBack();
}else{
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Exit!")
.setMessage("Are you sure you want to close?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("No", null)
.show();
}
}
Если вы хотите перейти на обратную страницу при нажатии на кнопку возврата телефона, используйте это:
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
Вы также можете создать пользовательскую кнопку возврата следующим образом:
btnback.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (wv.canGoBack()) {
wv.goBack();
}
}
});
Полная ссылка для следующей кнопки и индикатора выполнения: положить назад и следующую кнопку в webview
Это мое решение. Он также работает во Фрагменте.
webView.setOnKeyListener(new OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
WebView webView = (WebView) v;
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(webView.canGoBack())
{
webView.goBack();
return true;
}
break;
}
}
return false;
}
});
finish()
положитеreturn super.onKeyDown(keyCode, event)
– Bostone 16 January 2013 в 21:13else
– Bostone 16 January 2013 в 21:23