Задать вопрос
@sigarew

При нажатии назад android приложение закрывается, что делать?

Здравствуйте! Дочке задали домашнее задание создать приложение из мобильного сайта. Приложение создано, но есть проблема - при нажатии назад, приложение закрывается, а нужно чтобы переходило на предыдущую страницу. Вот код:

Main Activity:

package ru.yandex;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.*;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /* разворачиваем приложение на весь экран */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        /* применяем наш лейаут к текущему экрану */
        setContentView(R.layout.activity_main);

        /* находим WebView элемент по его id */
        WebView webView = (WebView) findViewById(R.id.WebView);

        /* создаем новые настройки для нашего WebView элемента */
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowFileAccess(true);
        webView.setWebViewClient(new MyClient());

        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        /* здесь вы можете поместить URL вашего сайта */
        webView.loadUrl("http://yandex.ru/");
    }

}

class MyClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        /* откроем новую веб-страницу в webview */
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        /*остановка загрузки и отображение страницы error.html из папки “assets”*/
        view.stopLoading();
        view.loadUrl(String.format("file:///android_asset/error.html?code=%s&description=%s&url=%s", Uri.encode(String.valueOf(errorCode)), Uri.encode(description), Uri.encode(failingUrl)));
    }
}


Код манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.yandex" >
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="ru.yandex.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  • Вопрос задан
  • 479 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@klim76
android/java/sql
Вам наверное такая строчка нужна:
@Override
    public void onBackPressed() {
        //вебвью наверное всё же стоит объявить в классе в не ка локальную переменную
        webview.goBack();
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект