کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش نحوه ی استفاده از ‏action bar‏ اندروید‎ قسمت ششم

 

clip_image001

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

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

 

آموزش نحوه ی استفاده از ‏action bar‏ اندروید قسمت ششم

پیمایش و راه گزینی بین تَب های مختلف (tab navigation)

گفتنی است که فرایند پیمایش را می توان از طریق استفاده ی همزمان از fragment و action bar نیز انجام داد. برای این منظور، main activity شما باید یک TabListener که مسئولیت راه گزینی بین تب های مختلف را برعهده دارد بکاربرده یا پیاده سازی کند.

جهت افزودن تَب جدید به action bar، از متد newTab () استفاده کنید.

کد زیر چنین activity ای را به نمایش گذاشته است که با بکارگیری activity های مجازی یا ساختگی این راه گزینی (switch) را تشریح کرده است.

package com.vogella.android.actionbar.tabs;
import android.app.ActionBar;

import android.app.Fragment;

import android.app.FragmentTransaction;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;

public class MainActivity extends FragmentActivity implements
    ActionBar.TabListener {
/**
   * The serialization (saved instance state) Bundle key representing the

   * current tab position.

   */

 
private static final String STATE_SELECTED_NAVIGATION_ITEM = ‎‎"selected_navigation_item";
  @Override
 
protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

   
// Set up the action bar to show tabs.
    final ActionBar actionBar = getActionBar();

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

   
// for each of the sections in the app، add a tab to the action bar.
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section1)

       .setTabListener(
this));
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section2)

       .setTabListener(
this));
    actionBar.addTab(actionBar.newTab().setText(R.string.title_section3)

       .setTabListener(
this));
  }

  @Override
 
public void onRestoreInstanceState(Bundle savedInstanceState) {
   
// Restore the previously serialized current tab position.
   
if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
‎‎getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));

    }

  }

  @Override
 
public void onSaveInstanceState(Bundle outState) {
   
// Serialize the current tab position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM، getActionBar()

       .getSelectedNavigationIndex());

  }

  @Override
 
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main، menu);

   
return true;
  }

  @Override
 
public void onTabSelected(ActionBar.Tab tab،
      FragmentTransaction fragmentTransaction) {

   
// When the given tab is selected، show the tab contents in the
   
// container view.
    Fragment fragment =
new DummySectionFragment();
    Bundle args =
new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER،

        tab.getPosition() +
1);
    fragment.setArguments(args);

    getFragmentManager().beginTransaction()

       .
replace(R.id.container، fragment).commit();
  }

  @Override
 
public void onTabUnselected(ActionBar.Tab tab،
      FragmentTransaction fragmentTransaction) {

  }

  @Override
 
public void onTabReselected(ActionBar.Tab tab،
      FragmentTransaction fragmentTransaction) {

  }

/**
   * A dummy fragment representing a section of the app

   */

 
public static class DummySectionFragment extends Fragment {
   
public static final String ARG_SECTION_NUMBER = "placeholder_text";
    @Override
   
public View onCreateView(LayoutInflater inflater، ViewGroup container،
        Bundle savedInstanceState) {

      TextView textView =
new TextView(getActivity());
      textView.setGravity(Gravity.CENTER);

      textView.setText(
Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
     
return textView;
    }

  }

}

 Drop-down menu navigation

این امکان وجود دارد که از spinner در action bar نیز استفاده کنید. توجه خود را به نمونه کد زیر جلب کنید.

   package com.vogella.android.actionbar.spinner;
import android.app.ActionBar;

import android.app.Fragment;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.TextView;

public class MainActivity extends FragmentActivity implements
    ActionBar.OnNavigationListener {
/**
   * The serialization (saved instance state) Bundle key representing the
   * current dropdown position.

   */

  private static final String STATE_SELECTED_NAVIGATION_ITEM = ‎‎"selected_navigation_item";
  @Override
 
protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

   
// Set up the action bar to show a dropdown list.
    final ActionBar actionBar = getActionBar();

    actionBar.setDisplayShowTitleEnabled(
false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

    final
String[] dropdownValues = getResources().getStringArray(R.array.dropdown);
   
// Specify a SpinnerAdapter to populate the dropdown list.
    ArrayAdapter<
String> adapter = new ArrayAdapter<String>(actionBar.getThemedContext()،
        android.R.layout.simple_spinner_item، android.R.id.text1،

        dropdownValues);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)‎‎;

   
// Set up the dropdown list navigation in the action bar.
    actionBar.setListNavigationCallbacks(adapter،
this);
   
// use getActionBar().getThemedContext() to ensure
   
// that the text color is always appropriate for the action bar
   
// background rather than the activity background.
  }

  @Override
 
public void onRestoreInstanceState(Bundle savedInstanceState) {
   
// Restore the previously serialized current dropdown position.
   
if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
‎‎getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));

    }

  }

  @Override
 
public void onSaveInstanceState(Bundle outState) {
   
// Serialize the current dropdown position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM، getActionBar()

       .getSelectedNavigationIndex());

  }

  @Override
 
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main، menu);

   
return true;
  }

  @Override
 
public boolean onNavigationItemSelected(int position، long id) {
   
// When the given dropdown item is selected، show its contents in the
   
// container view.
    Fragment fragment =
new DummySectionFragment();
    Bundle args =
new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER، position +
1);
    fragment.setArguments(args);

    getFragmentManager().beginTransaction()

       .
replace(R.id.container، fragment).commit();
   
return true;
  }

/**
   * A dummy fragment

   */

 
public static class DummySectionFragment extends Fragment {
   
public static final String ARG_SECTION_NUMBER = "placeholder_text";
    @Override
   
public View onCreateView(LayoutInflater inflater، ViewGroup container،
        Bundle savedInstanceState) {

      TextView textView =
new TextView(getActivity());
      textView.setGravity(Gravity.CENTER);

‎‎textView.setText(
Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
     
return textView;
    }

  }

}

ارزیابی

با این که navigation drawer نسبت به دیگر گزینه ها و امکانات جدید تلقی می گردد، بسیار مورد پسند کاربران دستگاه های اندروید قرار گرفته و کارامد محسوب می شود.

1394/07/27 3740 3133
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...