Закрыть веб-просмотр об успешном событии функции ajax - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу закрыть свое веб-представление или перенаправить, скажем, MainActivity.Java, когда получу успешное событие из функции Ajax.

Позвольте мне объяснить ..

При событии нажатия кнопки я называю это WebviewActivity.java через намерение.Теперь у меня есть php-файл, который я загружаю в webview через webview.loadUrl().Теперь пользователь зайдет на эту страницу и введет свои данные, а когда нажмете ОК, его данные будут вставлены на страницу через ajax-вызов php-файла. При успешном вызове ajax тег div<div> получит скрытие, а другой тег <div> отобразитсякоторые содержат одно сообщение "Ваши данные были записаны."Теперь я поставил onBackPress(), чтобы пользователь вернулся на MainActivity.java.Но вместо этого я хочу, чтобы после успешного просмотра события что-то вроде автоматически закрывалось или перенаправлялось на MainActivity.java автоматически.Возможно ли сделать такую ​​вещь?Любая помощь будет оценена.Заранее спасибо.

вот код веб-просмотра.

public class WebViewActivity extends AppCompatActivity {

Toolbar urTollbar;
WebView webView;
String parsringUrl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web_view);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    urTollbar = (Toolbar)findViewById(R.id.URanim_toolbar);
    setSupportActionBar(urTollbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setTitle("Submit For Approval");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    webView = (WebView) findViewById(R.id.webview);
    parsringUrl =  getIntent().getStringExtra("ParsingURL");
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.loadUrl(parsringUrl);




}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == android.R.id.home) {
        finish();
        overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

    }

    return super.onOptionsItemSelected(item);

}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
    Intent intent = new Intent(WebViewActivity.this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
}

}

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете вызвать функцию java из javascript в webview.

Java

Методы Java представлены в Javascript с помощью специального класса.Вот пример.Открытые методы помечаются аннотацией @JavascriptInterface.В документации сказано, что аннотация обязательна для API уровня 17 и выше.Я не уверен, но я думаю, что до SDK 17 раскрыты все методы.

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

Добавьте класс в веб-просмотр с помощью

myWebView.addJavascriptInterface(new WebAppInterface(this), "android");

Первый параметр - это интерфейсный класс сконтекст и последний - это имя переменной, которая будет использоваться в Javascript.

Javascript

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />

<script type="text/javascript">
    function showAndroidToast(toast) {
        if(typeof android !== "undefined" && android !== null) {
            android.showToast(toast);
        } else {
            alert("Not viewing in webview");
        }
    }
</script>

В Javascript есть глобальный объект под названием Android.Имя объекта происходит из метода addJavascriptInterface.Этот объект имеет все методы, аннотированные в классе интерфейса, в этом примере showToast (String toast).Здесь есть оператор if, чтобы проверить, установлен ли объект.С этим оператором if сайт можно использовать и в других браузерах, где нет интерфейса Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...