15 Ekim 2015 Perşembe

#ANDROID - JSON Parse (ayrıştırma) İşlemi

  Hiç yorum yok
15 Ekim

Özellikle akıllı telefonlar hayatımızdaki yerini arttırdığından beri web servis işleri artık olmazsa olmaz bir hale gelmiş durumda. Çünkü hazırladığımız bir web sitesini kullanıcı sayısını arttırmak adına bir mobil uygulamaya dahil etmek istiyoruz. Durum böyle olunca uzak sunucudaki verilere ulaşmak için web servis yazmak zorunda kalıyoruz.

Biz son yılların en önemli ve iddialı web servis aracı JSON'ı kullanacağız.

Ben minibusyollari.com'un uygulamasını yapmak istediğim için burada onun üzerinden gideceğim.

Sol tarafta gördüğünüz gibi JSON dili bu şekilde kolay, anlaşılabilir ve basit bir dil.

Bu sayfa böyle aşağıya doğru uzayıp gidiyor. Yaklaşık 300 küsür tane hat bilgisi mevcut.

Biz buradaki hat isimlerini çekerek uygulamamızda listelemek istiyoruz.


Bu uygulamadaki sayfalarımız MainActiviy.java, mainactivity.xml, ServiceHandler.java ve list_item.xml şeklinde.

ServiceHandler.java sayfamızı yabancı bir abimiz yazmış ve bizde direkt olarak bu sayfayı urlden verileri almak için kopyalayacağız.

Madem öyle ilk olarak ServiceHandler.java dosyamızın kodlarını yazalım.

ServiceHandler.java dosyası:

package com.example.jsonparsing1;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public class ServiceHandler {

static String response = null;
public final static int GET = 1;
public final static int POST = 2;

public ServiceHandler() {

}

/**
* Making service call
* @url - url to make request
* @method - http request method
* */
public String makeServiceCall(String url, int method) {
return this.makeServiceCall(url, method, null);
}

/**
* Making service call
* @url - url to make request
* @method - http request method
* @params - http request params
* */
public String makeServiceCall(String url, int method,
List<NameValuePair> params) {
try {
// http client
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpEntity httpEntity = null;
HttpResponse httpResponse = null;

// Checking http request method type
if (method == POST) {
HttpPost httpPost = new HttpPost(url);
// adding post params
if (params != null) {
httpPost.setEntity(new UrlEncodedFormEntity(params));
}

httpResponse = httpClient.execute(httpPost);

} else if (method == GET) {
// appending params to url
if (params != null) {
String paramString = URLEncodedUtils
.format(params, "utf-8");
url += "?" + paramString;
}
HttpGet httpGet = new HttpGet(url);

httpResponse = httpClient.execute(httpGet);

}
httpEntity = httpResponse.getEntity();
response = EntityUtils.toString(httpEntity);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return response;
}
}

Daha sonra bu verileri ListActivity'den kalıtacağımız (extends) için listemizin tasarımını yapmak üzere list_item.xml dosyamızı oluşturalım.

list_item.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp" >

<!-- Name Label -->

<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="#43bd00"
android:textSize="16sp"
android:textStyle="bold" />

<!-- Email label -->
<TextView
android:id="@+id/email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#acacac" />

<!-- Mobile number label -->
<TextView
android:id="@+id/mobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="Mobile: "
android:textColor="#5d5d5d"
android:textStyle="bold" />

</LinearLayout>

Tabi burada email label, mobile label falan yazıyor çok takılmayın yabancı kaynaktan araştırma yapmak zorunda kaldığımız için böyle oluyor. Amacına uygun, işimi görecek kadar düzenleme yaptım faso fisosuna karışmadım.

Neyse biz devam edelim. Şimdi mainactivity.xml dosyamızın içerine bir ListView ekliyoruz.

mainactivity.xml dosyası:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<!-- Main ListView
Always give id value as list(@android:id/list)
-->
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

</LinearLayout>

Daha sonra hemen MainActivity.java kodlarımıza geçelim.

MainActivity.java dosyası:

package com.example.jsonparsing1;

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;


public class MainActivity extends ListActivity {

private ProgressDialog pDialog;

// URL to get contacts JSON
private static String url = "http://minibusyollari.com/MinibusApi/";

// JSON Node names
private static final String TAG_HATLAR = "hatlar";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_URL = "url";

// contacts JSONArray
JSONArray contacts = null;

// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;

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

contactList = new ArrayList<HashMap<String, String>>();

ListView lv = getListView();
// Calling async task to get json
new GetContacts().execute();
}

/**
* Async task class to get json by making HTTP call
* */
private class GetContacts extends AsyncTask<Void, Void, Void> {

@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Lütfen bekleyin...");
pDialog.setCancelable(false);
pDialog.show();

}

@Override
protected Void doInBackground(Void... arg0) {
// Creating service handler class instance
ServiceHandler sh = new ServiceHandler();

// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

Log.d("Response: ", "> " + jsonStr);

if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);

// Getting JSON Array node
contacts = jsonObj.getJSONArray(TAG_HATLAR);

// looping through All Contacts
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);

String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String url = c.getString(TAG_URL);

// tmp hashmap for single contact
HashMap<String, String> contact = new HashMap<String, String>();

// adding each child node to HashMap key => value
contact.put(TAG_ID, id);
contact.put(TAG_NAME, name);
contact.put(TAG_URL, url);

// adding contact to contact list
contactList.add(contact);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else {
Log.e("ServiceHandler", "Bu url'de veri yok.");
}

return null;
}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
MainActivity.this, contactList,
R.layout.list_item, new String[] { TAG_ID, TAG_NAME,
TAG_URL }, new int[] { R.id.name,
R.id.email, R.id.mobile });

setListAdapter(adapter);
}

}

}

Evet burada da JsonArray ve JsonObject ayrıştırmalarını yapıp ListView'imizde listeliyoruz. Bu kısmı anlayabilmek için JSON diline hakim olmak gerek.

Onun haricinde kodlarımızı kullanıcıya JSON çekme ve işleme sırasında bir dialog gösterebilmek için AsynTask içerinde yazıyoruz.

onPreExecute() kısmında dialog'u oluşturuyoruz, doInBackground kısmında JSON ayrıştırma kodlarımızı yazıyoruz, son olarak onPostExecute kısmında ise dialogu kapatıp listeleme işlemini yapıyoruz.

Makale görseli:

Devamını oku

#ANDROID - Fragmentler ile SwipeTab

  Hiç yorum yok
15 Ekim

Evet bir önceki makalemizde fragment'den bahsetmiş ve ScrollTab ile ilgili bir uygulama yapmıştık.

Önceki makale: http://www.hcengiz.com/2015/10/android-fragmentler-ile-scrolltab_15.html

Daha detaylı bilgi için önceki makalemizi inceleyebilirsiniz. ScrollTab örneğinde yukarıdaki tab'lara tıklandığında fragmentleri değiştiremiyor, sadece parmak kaydırma hareketiyle fragmentler arasında geçiş yapabiliyorduk.

Bu uygulamamızda bu sorunu çözeceğiz. ActionBar kullanarak yukarıdaki tablara bastığımızda istediğimiz fragmente geçiş yapacağız.

Fragment kısmında diğer uygulamadan farklı olacak hiçbir şey yok, değişiklikler yine MainActivity kısmında olacak.

Hemen FragmenA.java, FragmentB.java, FragmentC.java, fragmena.xml, fragmentb.xml ve fragmentc.xml dosyalarımızı oluşturuyoruz.

fragmenta.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffcc00"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bu Fragment A"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

fragmentb.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#245"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bu Fragment B"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

fragmentc.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#931334"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bu Fragment C"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

.XML uzantılı dosyalarımızı hazırladık şimdi .JAVA uzantılı dosyalarımızı oluşturup bu Layoutlarımızı orada tanıtıyoruz.

FragmentA.java dosyası:

package com.example.fragmentscrolltab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
public class FragmentA extends Fragment {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
 
        View view = inflater.inflate(R.layout.fragmenta, container, false);
        return view;
    }
 
}

FragmentB.java dosyası:

package com.example.fragmentscrolltab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
public class FragmentB extends Fragment {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
 
        View view = inflater.inflate(R.layout.fragmentb, container, false);
        return view;
    }
 
}

FragmentC.java dosyası:

package com.example.fragmentscrolltab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
public class FragmentC extends Fragment {
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
 
        View view = inflater.inflate(R.layout.fragmentc, container, false);
        return view;
    }
 
}

mainactiviy.xml dosyası:

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


</android.support.v4.view.ViewPager>

MainActiviy.java dosyası:

package com.example.fragmentswipetab;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;


public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

    ActionBar actionbar;
    ViewPager viewpager;

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

        viewpager = (ViewPager) findViewById(R.id.pager);
        viewpager.setAdapter(new MyAdapter(getSupportFragmentManager()));
        viewpager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                actionbar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });

        actionbar = getActionBar();
        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        ActionBar.Tab tab1 = actionbar.newTab();
        tab1.setText("Tab 1");
        tab1.setTabListener(this);

        ActionBar.Tab tab2 = actionbar.newTab();
        tab2.setText("Tab 2");
        tab2.setTabListener(this);

        ActionBar.Tab tab3 = actionbar.newTab();
        tab3.setText("Tab 3");
        tab3.setTabListener(this);

        actionbar.addTab(tab1);
        actionbar.addTab(tab2);
        actionbar.addTab(tab3);
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        viewpager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {

    }

    class MyAdapter extends FragmentPagerAdapter {

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            switch (i) {
                case 0:
                    return new FragmentA();
                case 1:
                    return new FragmentB();
                case 2:
                    return new FragmentC();
            }
            return null;
        }

        @Override
        public int getCount() {
            return 3;
        }

    }

}

Evet bu uygulamamızda MainActivity içerisinde PagerTitleStrip kullanmak yerine ActionBar kullanarak tabların üzerine basıldığında fragment değiştirme olayını da yapmış olduk.

Makale görseli:

Devamını oku

#ANDROID - Fragmentler ile ScrollTab

  Hiç yorum yok
15 Ekim

Androidde bin bir çeşit activity oluşturup kullanıcıyı oradan oraya yönlendirerek uygulamalar yazabiliriz ancak bunun çok daha pratik bir yolu var. Bu yol fragment kullanmaktan geçiyor.

Fragment kullanarak oluştuğumuz  tüm -halk değimiyle- sayfaları MainActivity'de göstereceğiz ve kullanıcı parmağını sağa sola kaydırdığında fragmentler arasında geçiş yapacağız.

Twitter, Facebook, Instagram, Snapchat vs. vs. diye devam eder yani neredeyse ileri düzey tüm uygulamalar bu yapıyı kullanıyor.

Şimdi hemen işe koyulalım. Öncelikle derli toplu olması adına bize gerekecek sayfaları yazmakta fayda var. Yeni bir proje oluşturduğumuzda MainActivity otomatik olarak geliyor zaten. Biz FragmentA.java, FragmentB.java, FragmentC.java, fragmenta.xml, fragmentb.java ve fragmentc.java dosyalarını oluşturacağız.

Üç adet fragment oluşturmamızın özel hiçbir nedeni yok sadece örnek olsun diye yapıyoruz siz daha fazla ya da daha az oluşturabilirsiniz.

Bizim yapacağımız tüm işler MainActivity'de biteceği için oluşturduğumuz fragment sayfalarının üzerinden hızlıca bir geçelim. .xml uzantılı dosyalarımızda örneğin: "Bu Fragment A sayfası." yazılı bir TextView var bir de diğerlerinden ayırt edilmesi için üç fragmentin LinearLayout'una farklı backgroundlar atadık.

fragmenta.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffcc00"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bu Fragment A"
android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

fragmentb.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#245"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bu Fragment B"
android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

fragmentc.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#931334"
android:orientation="vertical" >

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bu Fragment C"
android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

.XML uzantılı dosyalarımızı hazırladık şimdi .JAVA uzantılı dosyalarımızı oluşturup bu Layoutlarımızı orada tanıtıyoruz.

FragmentA.java dosyası:

package com.example.fragmentscrolltab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentA extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub

View view = inflater.inflate(R.layout.fragmenta, container, false);
return view;
}

}

FragmentB.java dosyası:

package com.example.fragmentscrolltab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentB extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub

View view = inflater.inflate(R.layout.fragmentb, container, false);
return view;
}

}

FragmentC.java dosyası:

package com.example.fragmentscrolltab;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentC extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub

View view = inflater.inflate(R.layout.fragmentc, container, false);
return view;
}

}

Evet artık fragmentlerimiz hazır. Şimdi bu fragmentleri MainActivity'de çağıracağız ve parmak kaydırma hareketiyle ekranda gösterilmesini sağlayacağız.

mainactivity.xml'de çok dikkat edilmesi gereken bir nokta var. Burada bir Layout değil ViewPager kullanacağız. IDE (Eclipse) bunu bize otomatik olarak getirmiyor bu nedenle elle yazmak zorundayız.

MainActivity.xml dosyası:

<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pager">

<android.support.v4.view.PagerTitleStrip
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="top"
android:background="#33b5e5"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:textSize="15dp">
</android.support.v4.view.PagerTitleStrip>

</android.support.v4.view.ViewPager>

Ve ayrıca "tab" (fragment) başlıklarımızı ekranda göstermek için ViewPager'ın içerisine PagerTitleStrip tanımlıyoruz.

Daha sonra artık kodlarımızı yazmaya başlayabiliriz.

MainActivity.java dosyası:

package com.example.fragmentscrolltab;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {

ViewPager viewpager = null;

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

viewpager = (ViewPager) findViewById(R.id.pager);

FragmentManager fm = getSupportFragmentManager();
viewpager.setAdapter(new MyAdaptor(fm));
}

class MyAdaptor extends FragmentPagerAdapter {

public MyAdaptor(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int i) {

Fragment fragment = null;

if(i==0) //Seçilen A'ise
{
fragment = new FragmentA();
}
else if(i==1) //Seçilen B'ise
{
fragment = new FragmentB();
}
else //Seçilen C'ise
{
fragment = new FragmentC();
}

return fragment; //Hangi ekranın seçildiğinin bilgisini tutar.
}

@Override
public int getCount() {
return 3; //Kaç tane ekrana geçiş yapılacağının bilgisini tutar.
}

//Ekrana başlık gelmesi için bu metodu oluşturuyoruz.
@Override
public CharSequence getPageTitle(int i)
{
if (i == 0) {
return "Birinci Tab";
} else if (i == 1) {
return "Ikinci Tab";
} else if (i == 2) {
return "Üçüncü Tab";
}
return null;
}
}


}

Evet artık uygulamamız hazır. Kod bloklarında zaten açıklama satırıyla neyin ne olduğunu belirttiğim için burada açıklamıyorum.

Son olarak bundan önceki her makalemizde activity'mizi AndroidManifest.xml dosyasında tanıtmayı unutmayalım yazmıştım. Burada fragment kullandığımız için böyle bir derdimiz yok.

Makale görseli:

Devamını oku