در این فصل خواهیم دید که در یک اپلیکیشن چگونه مسیر به جلو و عقب را می توانید تعیین کنید. اما قبل از آن باید بدانیم که چگونه می توان مسیریابی اندروید را ارائه داد.

ارائه ی up navigation در مسیریابی اندروید:

navigation رو به بالا به ما اجازه می دهد تا در اپلیکیشن خود از یک اکتیویتی به اکتیویتی قبلی حرکت کنیم.

برای اجرای navigation رو به بالا ، اولین مرحله این است که یک اکتیویتی والد (Parent) مناسب ، برای هر اکتیویتی را اعلام کنیم.
می توانید این کار را با مشخص کردن اتریبیوت parentActivityName در یک اکتیویتی انجام دهید.
سینتکس آن مانند زیر می باشد.

 

android:parentActivityName = "com.example.test.MainActivity"

 

پس از آن لازم است که متد setDisplayHomeAsUpEnabled را از getActionBar() در متد onCreat مربوط به اکتیویتی ، فرا بخوانید. این کار دکمه ی back را فعال می کند.

 

getActionBar().setDisplayHomeAsUpEnabled(true);

 

آخرین کاری که باید انجام دهید، override کردن متد  onOptionsItemSelected می باشد. وقتی که یوزر آن را انتخاب کند، اکتیویتی شما یک فراخوانی به متد ()onOptionsItemSelected دریافت می کند. ID مربوط به این اکشن عبارت است از android.R.id.home که سینتکس  آن نیز مانند زیر می باشد:

 

public boolean onOptionsItemSelected(MenuItem item) {
   
   switch (item.getItemId()) {
      case android.R.id.home:
      NavUtils.navigateUpFromSameTask(this);
      return true;
   }	
}

بررسی دکمه ی back دستگاه در مسیریابی اندروید

از آنجایی که شما دکمه ی بازگشت را برای مسیریابی در داخل برنامه خود فعال کرده اید، ممکن است بخواهید عملکرد بستن برنامه را نیز در کمه ی بازگشت دستگاه قرار دهید.

این عمل به وسیله ی عبور از onBackPressed و سپس فراخوانی moveTaskToBack و روش finish انجام می شود. ترکیب آن را در زیر می بینید.

 

@Override
public void onBackPressed() {
   moveTaskToBack(true); 
   MainActivity2.this.finish();
}

 

علاوه بر روش setDisplayHomeAsUpEnabled، روش های دیگری در گروه ActionBar API وجود دارند که در زیر لیست شده اند.

شماره متد و توضیحات
1 addTab(ActionBar.Tab tab, boolean setSelected)

این روش یک تب برای استفاده از مدل مسیر یابی tabbed، اضافه می کند.

2 getSelectedTab()

اگر در مدل مسیریابی تب حداقل یک تب حاضر باشد، این روش آخرین تب انتخاب شده را گزارش می دهد

3 hide()

این روش Actionbar را پنهان می کند، اگر نمایش داده شود.

4 removeAllTabs()

این روش تمام تب ها را از Action bar حذف کرده و آخرین تب را از حالت انتخاب خارج می کند.

5 selectTab(ActionBar.Tab tab)

این روش تب مشخصی را انتخاب می کند.

مثال

مثال زیر استفاده از مسیریابی (Navigation) را توضیح می دهد. این مثال یک اپلیکیشن پایه ایجاد می کند که مسیریابی داخل اپلیکیشن را امکان پذیر می کند.
برای انجام این مثال لازم است آن را روی یک دستگاه واقعی یا یک شبیه ساز اجرا کنید.

مرحله  توضیحات
1 برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان test تحت بسته ی com.example.test نام گذاری کنید.
2 فایل src/MainActivity.java را برای افزودن کد فعالیت تغییر دهید.
3 یک فعالیت با نام MainActivity2 ایجاد کرده و آن را برای افزودن کد فعالیت ویرایش کنید.
4 لی اوت XML فایل res/layout/activity_main.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید
5 لی اوت XML فایل res/layout/activity_main_activity2.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید.
6 فایل res/values/string.xml را تغییر داده و مولفه های رشته ی لازم را به آن اضافه کنید.
7 AndroidManifest.xml را برای افزودن کد لازم تغییر دهید.
8 برنامه را اجرا کنید، یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

محتوای فایل src/MainActivity.java :

 

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity  {
   Button b1;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1 = (Button) findViewById(R.id.button);
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Intent in=new Intent(MainActivity.this,second_main.class);
            startActivity(in);
         }
      });
   }
}

 

محتوای src/second_main.java :

 

package com.example.sairamkrishna.myapplication;

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

/**
   * Created by Sairamkrishna on 4/6/2015.
*/

public class second_main extends Activity {
   WebView wv;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main_activity2);

      wv = (WebView) findViewById(R.id.webView);
      wv.setWebViewClient(new MyBrowser());
      wv.getSettings().setLoadsImagesAutomatically(true);
      wv.getSettings().setJavaScriptEnabled(true);
      wv.loadUrl("http://www.tutorialspoint.com");
   }

   private class MyBrowser extends WebViewClient {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
      }
   }
}

 

محتوای فایل activity_main.xml :

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView android:text="Navigation example" android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:theme="@style/Base.TextAppearance.AppCompat" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="first page"
      android:id="@+id/button"
      android:layout_below="@+id/imageView"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView"
      android:layout_marginTop="61dp"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />

</RelativeLayout>

 

محتوای فایل activity_main_activity2.xml :

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical" android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:weightSum="1">
   
   <WebView
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:id="@+id/webView"
      android:layout_gravity="center_horizontal"
      android:layout_weight="1.03" />

</LinearLayout>

 

محتوای Strings.xml:

 

<resources>
   <string name="app_name">My Application</string>
</resources>

 

محتوای AndroidManifest.xml :

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".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>
    
      <activity android:name=".second_main"></activity>
      
   </application>
</manifest>

 

می خواهیم اپلیکیشن را اجرا کنیم . فرض می کنیم که در هنگام انجام تنظیمات محیط، AVD خود را ایجاد کرده اید. برای اجرای برنامه از اندروید استودیو ، یکی از فایل های اکتیوتی پروژه را باز کنید و روی آیکون Run Eclipse Run Icon از نوار ابزار کلیک کنید. اندروید استودیو اپلیکیشن را روی AVD شما نصب و آغاز می کند و اگر همه چیز در مورد برنامه و تنظیمات درست باشد، پنجره ی Emulator زیر نمایش داده خواهد شد :

Anroid Navigation Tutorial

اکنون دکمه ی Go to activity 2 را انتخاب کنید، صفحه ی زیر نمایش داده خواهد شد.

Anroid Navigation Tutorial