অ্যান্ড্রয়েড ইন্টারমিডিয়েট টিউটোরিয়াল ১১ঃ টুলবার ও নেভিগেশন ড্রয়ার

অনেকদিন পর ফিরলাম টিউটোরিয়াল নিয়ে। ভিডিওগুলো পেতে সাবস্ক্রাইব করুন এখানে।

সালাম ও ভালোবাসা সব ডেভেলপারদে জন্য যারা শিখছেন অ্যান্ড্রয়েড লাইমের সাথে। আজকে আমরা দুইটা জিনিস শিখবো।

 

১/ টুলবার ( অ্যাপের উপরে যে বারটা থাকে )  

২/ নেভিগেশান ড্রয়ার ( ম্যাটেরিয়াল প্রোপারটিজ ব্যবহার করে )

কাজ শেষ হওয়ার পর নিচের মত দেখাবে। এক্সাইটেড? 😀

 

android lime toolbar

android lime toolbar

androidlime navigation drrawer

androidlime navigation drawer

 

 

 

অনেকদিন পর ফিরলাম টিউটোরিয়াল নিয়ে। ভিডিওগুলো পেতে
ভালো কথা, এটা কিন্তু আমি অ্যান্ড্রয়েড হাইভ এর টিউটোরিয়াল ফলো করে করেছি। সো, ক্রেডিট গোস টু রাভি

শুরু করা যাক। প্রথমে টুলবার। অকা ফ্রান্স?

 

স্টেপ ১:
টুলবারের জন্য layout এ একটা এক্সএমএল লেয়াউট ফাইল ক্রিয়েট করতে হবে। তাতে হবে নিচের কোডঃ

res/layout/androidlimetoolbar.xml


<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:local="http://schemas.android.com/apk/res-auto"
   android:id="@+id/toolbar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:minHeight="?attr/actionBarSize"
   android:background="#ad1457"
   local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
   local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />


 

 

স্টেপ ২:

এই বানানো টুলবার ইনক্লুড করতে হবে মেইন এক্সএমএল ফাইলে। কিভাবে?

res/layout/activity_main.xml

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

    <LinearLayout android:id="@+id/container_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">

        <include android:id="@+id/toolbar" layout="@layout/androidlimetoolbar" />
    </LinearLayout>

এখানে    include ট্যাগ ব্যবহার করে androidlimetoolbar.xml টা, আমাদের res/layout/activity_main.xml এর মধ্যে ইঙ্কলুড করলাম। মজা না?

 

স্টেপ ৩:
এখন একটা থিম বানাতে হবে। কাস্টম থিম। আমি প্রথমে কোড দিচ্ছি, পরে কোড বুঝাচ্ছি। এটা res/layout/values/styles.xml ফাইলে লিখতে হবে।

<resources>

   <!-- Base application theme. -->

<style name="AndroidLimeTheme" parent="AndroidLimeTheme.Rubel">
       <!-- Customize your theme here. -->
   </style>


<style name="AndroidLimeTheme.Rubel" parent="Theme.AppCompat.Light.DarkActionBar">
       <item name="windowNoTitle">true</item>
       <item name="windowActionBar">false</item>
       <item name="colorPrimary">#ad1457</item>
       <item name="colorPrimaryDark">#880e4f</item>
       <item name="colorAccent">#e91e63</item>
   </style>


</resources>

 

প্রথম স্ট্যাইলটা হচ্ছে থিমের নাম ও প্যারেন্ট ডিক্লেয়ার। নিচের স্ট্যাইলে নাম হবে থিমের প্যারেন্ট এর নাম। সেখানে একটা একটা করে আইটেম যোগ করে আমরা থিম সাজাবো।
এখানে ৩টা গুরুত্বপুর্ন জিনিস বলে নেই। colorPrimary হচ্ছে টুলবারের কালার। colorPrimaryDark হচ্ছে ললিপপ পরের ভার্শনে নোটিফিকেশান বারের কালার। colorAccent হচ্ছে, ধরন আপনি সোয়াইপ করছেন তখন যে শ্যাডো দেখা যাবে, সেটা।

 

 

স্টেপ ৪:
এখন মেনিফেস্ট ফাইলে ( AndroidManifest.xml ) গিয়ে থিমের নাম এখানে যেটা দিয়েছি সেটা দিতে হবে। থিমের নামসহ মেনিফেস্ট ফাইল দাঁড়াবে এমন,

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

   <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AndroidLimeTheme" >
       <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>
   </application>

</manifest>

 

স্টেপ ৫:

build.gradle ফাইলে গিয়ে আমরা ম্যাটেরিয়াল ডিজাইন এর সুবিধা পেতে recyclerview লাইব্রেরি অ্যাড করে নিবো ডিপেন্ডেসি অপশনে। অ্যাড করার পর গ্রাডল ফাইলের ডিপেন্ডিন্সি এমন দেখাবেঃ


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
}

এরপর ক্লিন করে বিল্ড দিবো।

 

স্টেপ ৬:

এখন জাভা ফাইলে ফিরে যাবো আমরা। MainActivity.java তে যেয়ে ক্লাসকে এক্সটেন্ডস করবো অ্যাপকম্প্যাট একটিভিটিতে ( MainActivity extends AppCompatActivity ) ।

Toolbar এর অব্জেক্ট ডিক্লেয়ার করতে হবে।
findViewById দিয়ে ঐ অবজেক্ট এ এক্সএমএল এর টুলবার ধরিয়ে দিতে হবে।
একশনবার সাপোর্ট এনাবল করতে হবে।
কোড দাড়াবে এমন,


// decalre android lime toolbar object
Toolbar androidlime_toolbar;
private FragmentDrawer drawerFragment;

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

// linking with xml
androidlime_toolbar = (Toolbar) findViewById(R.id.toolbar);
// giving actionbar support
setSupportActionBar(androidlime_toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);

}

এবার রান করালে টুলবার দেখা যাবে। ইয়ে এ এ এ এ 😀
না দেখালে আমার দোষ নাই :3

 

 

নেভিগেশান ড্রয়ারঃ

ন্যাভিগেশন ড্রয়ার দেখানোর জন্য বেশ অনেকগুলো কাজ করা লাগবে। এর মধ্যে আমাদের ফ্র্যাগমেন্টও শেখা হবে। ফ্র্যাগমেন্ট শেখার জন্য পরে হয়ত ডেডিকেটেড টিউটোরিয়াল দিবো।

 

স্টেপ ১:

res/values/dimens.xml এ গিয়ে resources ট্যাগের  মধ্যে নিচের লাইন যুক্ত করে দিন আগেরগুলোর সাথে। আমাদের ন্যাভ ড্রয়ারের ওয়াইড এটা।

 


&nbsp;
  <dimen name="nav_drawer_width">260dp</dimen> 

res/values/strings.xml এ গিয়ে আগে যা ছিলো সব উঠিয়ে ফেলুন। তারপর নিচের লাইনগুলো পেস্ট করুন,


<resources>
   <string name="app_name">Android Lime</string>

   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>

   <string name="action_search">Search</string>
   <string name="drawer_open">Open</string>
   <string name="drawer_close">Close</string>

   <string name="nav_item_home">Home</string>
   <string name="nav_item_friends">Articles</string>
   <string name="nav_item_notifications">Mosharrof Rubel</string>

   <!-- navigation drawer item labels -->
   <string-array name="nav_drawer_labels">
       <item>@string/nav_item_home</item>
       <item>@string/nav_item_friends</item>
       <item>@string/nav_item_notifications</item>
   </string-array>

   <string name="title_messages">Mosharrof Rubel</string>
   <string name="title_friends">Articles</string>
   <string name="title_home">Home</string>
</resources>


এখানে স্ট্রিং আর স্ট্রিং অ্যারেগুলো ডিক্লেয়ার করা হয়েছে, এগুলো আমরা কল করবো আমাদের জাভা ফাইল থেকে বিভিন্ন সময়ে।

 

 

স্টেপ ২:

ন্যাভিগেশন ড্রয়ার এ কি কি আইটেম থাকবে তা নিয়ে আমরা একটা ক্লাস বানাবো। ক্লাস এর নাম NavigationDrawerItems দিন । ক্লাসে নিচের মত আইটেমগুলো থাকবেঃ


public class NavigationDrawerItems {

private boolean showNotify;
private String title;

public NavigationDrawerItems() {

}
// উপরের এটা কন্সট্রাক্টর, নিচেরটাও
public NavigationDrawerItems(boolean showNotify, String title) {
this.showNotify = showNotify;
this.title = title;
}

public boolean isShowNotify() {
return showNotify;
}

public void setShowNotify(boolean showNotify) {
this.showNotify = showNotify;
}
// টাইটেলের জন্য গেটার,সেটার
public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

}


 

স্টেপ ৩:

এখন নেভিগেশন ড্রয়ার আইটেমের জন্য অ্যাডাপ্টার দরকার হবে একটা। সেটার জন্য নতুন একটা ক্লাস করে নিতে হবে। ক্লাসের নাম দিন, NavigationDrawerAdapter যেটা এক্সটেন্ডস করবে RecyclerView.Adapter কে।


public class NavigationDrawerAdapter extends RecyclerView.Adapter {
List data = Collections.emptyList();
private LayoutInflater inflater;
private Context context;

public NavigationDrawerAdapter(Context context, List data) {
this.context = context;
inflater = LayoutInflater.from(context);
this.data = data;
}

public void delete(int position) {
data.remove(position);
notifyItemRemoved(position);
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.navdrawerrow, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
NavigationDrawerItems current = data.get(position);
holder.title.setText(current.getTitle());
}

@Override
public int getItemCount() {
return data.size();
}

class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;

public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
}
}
}

MyViewHolder onCreateViewHolder ম্যাথডে লেআউট যুক্ত করতে হবে। লেআউট এর এক্সএমএল কোডে নিচের কোড দিয়ে দিন। ন্যাভ ড্রয়ার এর সব আইটেমগুলোর টেক্সট এখান থেকে আসবে। আপনি যদি চান এগুলোর সাথে ইমেজও আসবে। তাহলে এখানেই ইমেজভিউ অ্যাড করতে পারেন। জাভাতেও সেই অনুসারে কোড লিখতে হবে।


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true">

   <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="30dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:textSize="15dp" android:textStyle="bold" />

</RelativeLayout>




 

স্টেপ ৪:

এখন ফ্র্যাগমেন্ট ড্রয়ার এর কাজ করতে হবে। এটা স্লাডিইং মেন্যু বের করা ও ভেতরে বিয়ে যাওয়ার কাজ করবে। একই সাথে সবকিছুকে কম্বাইন্ড করে রাখবে। ক্লাস এর নাম দিন FragmentDrawer যেটা extends করবে Fragment কে। Fragment Drawer এর একটা এক্সএম্লএল লেয়াউটও থাকবে। যেখানে ন্যাভ হেডার থাকবে। ন্যাভ হেডারের ব্যাকগ্রাউন্ড দেয়া যাবে এখান থকে। তার মধ্যে নিজের ইচ্ছে মত ডিজাইন। এখানে আমি অ্যান্ড্রয়েড লাইম এর লোগো দিলাম । সো, আগে XML ফাইল দেখে নেইঃ

res/layout/fragmentdrawer.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white">


   <RelativeLayout android:id="@+id/nav_header_container" android:layout_width="match_parent" android:layout_height="140dp" android:layout_alignParentTop="true" android:background="#ad1457">

       <ImageView android:layout_width="100dp" android:layout_height="70dp" android:src="@drawable/limelogo" android:scaleType="fitCenter" android:layout_centerInParent="true" />

   </RelativeLayout>


   <android.support.v7.widget.RecyclerView android:id="@+id/drawerList" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/nav_header_container" android:layout_marginTop="15dp" />


</RelativeLayout>


 

 

আর FragmentDrawer ক্লাসের জাভা কোড হবে নিচের মতঃ


public class FragmentDrawer extends Fragment {
// প্রয়োজনীয় প্যারামিটার ডিক্লেয়ার করা হল
private RecyclerView recyclerView;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private NavigationDrawerAdapter adapter;
private View containerView;
private static String[] titles = null;
private FragmentDrawerListener drawerListener;

// নিচেরটা কন্সট্রাক্টর
public FragmentDrawer() {

}

public void setDrawerListener(FragmentDrawerListener listener) {
this.drawerListener = listener;
}

public static List getData() {
List data = new ArrayList();

// preparing navigation drawer items
for (int i = 0; i < titles.length; i++) {
NavigationDrawerItems navItem = new NavigationDrawerItems();
navItem.setTitle(titles[i]);
data.add(navItem);
}
return data;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// drawer labels
titles = getActivity().getResources().getStringArray(R.array.nav_drawer_labels);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflating view layout
View layout = inflater.inflate(R.layout.fragmentdrawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);

adapter = new NavigationDrawerAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}

@Override
public void onLongClick(View view, int position) {

}
}));

return layout;
}

public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) {
containerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}

@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}

@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
toolbar.setAlpha(1 - slideOffset / 2);
}
};

mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});

}

public static interface ClickListener {
public void onClick(View view, int position);

public void onLongClick(View view, int position);
}

static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {

private GestureDetector gestureDetector;
private ClickListener clickListener;

public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}

@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildPosition(child));
}
}
});
}

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildPosition(child));
}
return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}

}

public interface FragmentDrawerListener {
public void onDrawerItemSelected(View view, int position);
}

 

কঠিন লাগছে? 😛
আচ্ছা, এগুলা মুখস্থ করতে হবেনা। শুধু বুঝতে হবে কোনটা কি কাজ করছে।

 

স্টেপ ৫: 
এখন প্রতিটা আইটেমে ক্লিক করলে যে পেজে যাবো সেগুলো লিখবো। এগুলাকে বলে ফ্র্যাগমেন্ট। ফ্র্যাগমেন্ট এর লাইফ সাইকেল আছে এক্টিভিটির মত। এগুলোকে সাব এক্টিভিটিও বলে। পরে সময় করে লিখবো ফ্র্যাগমেন্ট নিয়ে।

নতুন একটা ক্লাস বানাই HomeFragment নামে। যেটা extends করবে Fragment কে।


public class HomeFragment extends Fragment {

public HomeFragment() {
// Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.home_fragment, container, false);

// Inflate the layout for this fragment
return rootView;
}

@Override
public void onDetach() {
super.onDetach();
}
}

ফ্রাগমেন্ট এর এক্সএমএল নিচে দিচ্ছি। ড্রয়ারে আইটেমগুলোতে ক্লিক করে যতগুলো পেজে যেতে চান ততগুলো ফ্র্যাগমেন্ট আর এক্সএমএল করতে হবে। সেখানে কোড করবেন, লিখবেন।
res/layout/home_fragment.xml


<?xml version="1.0" encoding="utf-8"?>
<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="com.androidlime.toolbarnnavigationdrawer.HomeFragment">
   <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" android:text="AndroidLime is an open and free platform to learn Java Programming and Android Application Development." />

</LinearLayout>

 

এভাবে বাকি দুই আইটেম এর জন্য দুইটা করুন।

 

 

স্টেপ ৬:
মেইন এক্টিভিটিতে যেতে হবে এখন। তার আগে মেইন এক্টিভিটির এক্সএমএল এ নিচের কোড লিখতে হবেঃ

res/layout/activity_main.xml

 




<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent">


   <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

       <LinearLayout android:id="@+id/container_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">

           <include android:id="@+id/toolbar" layout="@layout/androidlimetoolbar" />
       </LinearLayout>

       <FrameLayout android:id="@+id/container_body" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" >
       </FrameLayout>


   </LinearLayout>


   <fragment android:id="@+id/fragment_navigation_drawer" android:name="com.androidlime.toolbarnnavigationdrawer.FragmentDrawer" android:layout_width="@dimen/nav_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragmentdrawer" tools:layout="@layout/fragmentdrawer" />

</android.support.v4.widget.DrawerLayout>


খেয়াল করুন, এখানে শুরুতে ফ্রেম লেআউট দেয়া থাকে। পরে ফ্রাগমেন্টগুলোতে ক্লিক করলে ফ্রেম লেয়াউটে সেটা রিপ্লেস হয়ে যায়। মজার জিনিস না ফ্রেম লেয়াউট?

 

স্টেপ ৭:
এবার মেইন এক্টিভিটিতে কোড লিখবো আমরা। MainActivity.java তে নিচের কোড পেস্ট করিঃ


package com.androidlime.toolbarnnavigationdrawer;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener{

//www.facebook.com/rubel007cse

// decalre android lime toolbar object
Toolbar androidlime_toolbar;
private FragmentDrawer drawerFragment;

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

// linking with xml
androidlime_toolbar = (Toolbar) findViewById(R.id.toolbar);
// giving actionbar support
setSupportActionBar(androidlime_toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);

// ড্রয়ার ফ্র্যাগমেন্ট দেখানোর জন্য নিচের অংশটুকু
drawerFragment = (FragmentDrawer)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), androidlime_toolbar);
drawerFragment.setDrawerListener(this);
// শুরুতেই হোম ফ্র্যাগ্মেন্ট দেখাতে নিচের অংশটুকু
if(savedInstanceState == null) {
displayView(0);
}

}

@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;
}
//www.facebook.com/rubel007cse
@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;
}
//www.facebook.com/rubel007cse
return super.onOptionsItemSelected(item);
}

// আইটেম সিলেক্ট হলে কোনটা ডিস্প্লে করবে তা এখান থেকে কাজ করবে।
@Override
public void onDrawerItemSelected(View view, int position) {
displayView(position);
}

// যেই আইটেমে ক্লিক হচ্ছে সেখানে যেতে নিচের ডিস্প্লে ভিউ মেথড কল হবে।
private void displayView(int position) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (position) {
case 0:
fragment = new HomeFragment();
title = getString(R.string.title_home);
break;
case 1:
fragment = new FriendFragment();
title = getString(R.string.title_friends);
break;
case 2:
fragment = new SmsFragment();
title = getString(R.string.title_messages);
break;
default:
fragment = new HomeFragment();
title = getString(R.string.title_home);
break;

}

if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container_body, fragment);
fragmentTransaction.commit();

// set the toolbar title
getSupportActionBar().setTitle(title);
}
}
}

&nbsp;

 

সো, কাজ শেষ মোটামুটি। এখন রান দিলেই আমরা আমাদের কাংখিত রেজাল্ট পাবো নিজের মত। এবার নিজের ইচ্ছে মত কাস্টমাইজ করে নিন। যাদের এরপরেও কাজ হচ্ছেনা তারা সোর্স কোড পাবেন এখানে।

ভালো থাকবে, আবার দেখা হবে। ভালো লাগলে শেয়ার করুন। জানান, জানুন।

 

পরের লেখাগুলোর জন্য আমাকে ফেসবুকে ফলো করতে পারেন এখনে।

Mosharrof Rubel

আমাকে ফেসবুকে পাবেন এখানেঃ মোশাররফ রুবেল

You may also like...

Leave a Reply