آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

بازگشت به آدرس اینترنتی (URL) قبلی در خود WebView، هنگام اشاره بر روی دکمه Back گوشی، در برنامه نویسی اندروید

زمانی که ما بر روی دکمه Back گوشی اشاره می کنیم، به طور پیش فرض، از Activity فعلی در برنامه اندروید، خارج شده و به Activity قبل تر می رویم. اما این عملکرد، برای هنگامی که یک WebView در Activity داشته باشیم، مطلوب نیست. مثلا فرض کنید که تعیین کرده باشیم که لینک ها درون خود WebView باز شوند (نمایش داده شوند)، بنابراین ممکن است که کاربر چند بار بر روی لینک های مختلف اشاره کرده باشد و اکنون بخواهد که برای برگشتن به آدرس های اینترنتی (URL) قبلی در WebView ، از دکمه Back گوشی استفاده کند. بنابراین در این مبحث، کدهای لازم برای تعیین WebView، هنگام اشاره بر روی دکمه Back گوشی را شرح خواهیم داد.

قبل از هر چیز، اجازه دسترسی به اینترنت را باید در فایل AndroidManifest.xml از پروژه اندروید ذکر کنیم. برای این منظور، باید کد زیر را در فایل AndroidManifest.xml بنویسیم :


<uses-permission android:name="android.permission.INTERNET" />

محل قرارگیری کد بالا در فایل AndroidManifest.xml را می توانید در کدهای زیر مشاهده کنید :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kelidestan.com"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
   
    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.kelidestan.com.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

همچنین در فایل xml متناظر با Activity ، باید یک عنصر WebView تعریف کنیم. به عنوان مثال، کدهای فایل xml را به صورت زیر می نویسیم :


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

در کد بالا، عنصر WebView ، کل صفحه را می پوشاند.

خوب اکنون کدهای فایل java مربوط به Activity را به صورت زیر می نویسیم :


package com.kelidestan.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
       
        public WebView webView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                webView = (WebView) findViewById(R.id.webView1);
                webView.setWebViewClient(new WebViewClient());
                webView.getSettings().setJavaScriptEnabled(true);
                webView.getSettings().setLoadWithOverviewMode(true);
                webView.getSettings().setUseWideViewPort(true);
                webView.getSettings().setBuiltInZoomControls(true);
                webView.loadUrl("http://www.kelidestan.com/android/index.php");
        }
       
        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(event.getAction() == KeyEvent.ACTION_DOWN){
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_BACK:
                if(webView.canGoBack()){
                        webView.goBack();
                }else{
                    finish();
                }
                return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }


}

با خط زیر از کدها، تعیین کرده ایم که لینک ها درون خود عنصر WebView باز شوند (نمایش داده شوند)، زیرا در غیر این صورت، بازگشت به آدرس اینترنتی (URL) قبلی در خود WebView ، معنایی ندارد :


webView.setWebViewClient(new WebViewClient());

کدهایی هم که باعث می شوند، وقتی بر روی دکمه Back اشاره می کنیم، به آدرس اینترنتی قبلی در خود WebView برویم (نه خروج از Activity)، کدهای زیر می باشند :


@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(event.getAction() == KeyEvent.ACTION_DOWN){
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_BACK:
                if(webView.canGoBack()){
                        webView.goBack();
                }else{
                    finish();
                }
                return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }

بنابراین با این نوع کدنویسی برای WebView ، با اشاره بر روی دکمه Back گوشی ، به آدرس اینترنتی قبلی در WebView می رویم. البته اگر آدرس قبلی دیگر نباشد (یعنی به اولین آدرس تعیین شده برای WebView برسیم)، از Activity خارج خواهد شد و به Activity قبلی بر می گردد.

نویسنده علیرضا گلمکانی
شماره کلید 2568
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 1 1 0
ffghfhgf
۱۳۹۸/۰۶/۰۳
۱۵:۳۱

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)