2012-09-18 6 views
0

Как сделать кнопку «Назад» вернуться к предыдущей странице/истории ссылок, а не закрывать приложение?Как добавить кнопку «Назад» к WebView?

Вот мой код:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

if (keyCode == KeyEvent.KEYCODE_BACK){ 
    if(WebView.canGoBack()){ 
    WebView.goBack(); 
      return true; 
    } 
} 
return super.onKeyDown(keyCode, event); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_dsaif); 
    runDialog(5); 
    WebView engine = (WebView) findViewById(R.id.web_engine); 
    engine.loadUrl("http://android.dsaif.tk/store/"); 
    engine.setWebViewClient(new HelloWebViewClient()); 
} 

    private class HelloWebViewClient extends WebViewClient { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) {     

     return false; 
     } 
    } 

К сожалению, я очень новый для развития Android и ничего не знаю о Java. Просьба предоставить полный код :)

+0

Вы можете использовать макет, который содержит как WebView и некоторые дополнительные элементы управления (назад/вперед/обновить/что угодно), а затем в обратные вызовы этих кнопок действуют на WebView соответственно – Kostas

+0

, что происходит с кодом выше? – nandeesh

ответ

1

Как отметил Костас создания кнопки в вашем XML, а затем в обратном вызове вы звоните webview.goBack();

XML:

<Button 
    android:id="@+id/backBtn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Back /> 

активность:

Button backButton = (Button) findViewById(R.id.backBtn); 
backButton.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     engine.goBack(); 
    } 
}); 

Редакция:

Это приведет к возврату кнопки телефона в историю, если есть история.

public class someNameHere extends Activity{ 
    private WebView engine; 

    @Override 
    public void onCreate(...){ 
     ... 
     engine = (WebView) findViewById(R.id.web_engine); 
     ... 
    } 
    @Override 
    public boolean onKeyDown(...){ 
     if((keyCode == KeyEvent.KEYCODE_BACK) && engine.canGoBack()){ 
     engine.goBack(); 
     return true; 
     } 
     ... 
    } 
+0

Я просто хочу, чтобы кнопка на телефоне работала, никаких кнопок на экране – user1561329

+0

Тогда вам нужно позвонить в веб-обозреватель, который вы используете в своем 'onKeyDown'. Вы вызываете 'WebView.goBack();' но это должно быть 'engine.goBack(); 'Итак, вам нужно объявить свой веб-просмотр в своем классе, а не в методе' onCreate' – Zyber

+0

Решена ли проблема? – Zyber

Смежные вопросы