سبد (0)

آموزش مسیریابی اندروید

آموزش مسیریابی اندروید

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

ارائه ی up navigation

Up navigation  به ما اجازه می دهد تا در برنامه ی خود از یک فعالیت به فعالیت قبلی حرکت کنیم.

برای اجرای Up navigation اولین مرحله این است که فعالیت پایه ی مناسب برای هر فعالیت را اعلام کنیم. می توانید این کار را با مشخص کردن ویژگی parentActivityName در یک اکتیویتی انجام دهید. ترکیب آن مانند زیر می باشد.

 

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

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

 

getActionBar().setDisplayHomeAsUpEnabled(true);

آخرین کاری که باید انجام دهید، رد شدن از روش 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 وجود دارند که در زیر لیست شده اند.

  • addTab(ActionBar.Tab tab, boolean setSelected)

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

  • getSelectedTab()

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

  • hide()

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

  • removeAllTabs()

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

  • selectTab(ActionBar.Tab tab)

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

مثال

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

  • برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان  Navigation   تحت بسته ی com.PRG.Navigation نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDKو Compile With در آخرین ورژن Android SDKهستند تا از سطوح بالاتر API استفاده کنید.

  • فایل src/MainActivity.java را برای افزودن کد فعالیت تغییر دهید.

  • یک اکتیویتی جدید با نام second_main.java ایجاد کرده و آن را برای افزودن کد اکتیویتی ویرایش کنید.

  • لی اوت XML فایل res/layout/activity_main.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید.

  • لی اوت XML فایل second.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید.

  • AndroidManifest.xml را برای افزودن کد لازم تغییر دهید.

  • برنامه را اجرا کنید، یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

در اینجا محتوای MainActivity.javaرا مشاهده می کنید.

 

package com.PRG.Navigation ;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

import android.graphics.Color;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

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);
         }
      });
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

در اینجا محتوای  src/second_main.java را مشاهده می کنید.

 

package com.PRG.Navigation ;

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.second);
      
      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می باشد.

 

<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 PRG" 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">Navigation</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>

در اینجا محتوای AndroidManifest.xmlمی باشد.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.PRG.Navigation " >
   <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>

اجازه بدهید برنامه  Navigation را اجرا کنیم. فرض می کنیم که در هنگام انجام تنظیمات محیط، AVD خود را ایجاد کرده اید. برای اجرای برنامه از eclipse، یکی از فایل های فعالیت پروژه را باز کنید و روی آیکن Run  از تولبار کلیک کنید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه