Ders 18: Android Veritabanı Üzerinde Çalışma Adımları

31 Ocak 2012 Salı
Veritabanı üzerinde nasıl işlem yaptığımızı, hangi sırada gittiğimizi ve neyin ne fonksiyonu olduğunu anlamak için, adım adım SQLite işlemlerine bakalım:

  •       SQLiteOpenHelper Sınıfından Üretilen Bir Sınıf Oluşturmak

public class class_adı extends SQLiteOpenHelper {}

Bu sınıfı extend etmek bize 2 metodu kullanma zorunluluğu getirecektir:
·         onCreate(SQLiteDatabase db) : Veritabanı ilk oluşturulduğunda çağrılır. Tabloları, viewları, trigger vb. yapıları bu metot içinde oluştururuz.
·         onUpgrade(SQLiteDatabase db, int eskiversiyon, int yeniversiyon):  Veritabanı üzerinde herhangi bir değişiklik olduğunda ( Tablo değişimi vb.) çağrılır.

  •         Sabitleri Tanımlamak

public class class_adı extends SQLiteOpenHelper {
               private static final String db_adi = “….” ;
               private static final int version=”…” ;
               private static final String tablo_adi=”…” ;
                //yapıcı (constructor) metot
                //onCreate(…) metodu
                //onUpgrade(..) metodu }

Burada önemli olan private değeridir. Sabitlere, sadece bu class içerisinden erişilmesine izin verilmesi açısından “private” kullanılmıştır. Aslında, sabitler başka bir dosya içerisinde de tanımlanabilir. Ancak erişilebilir olması önemlidir. Yani, sabitleri başka bir dosya içerisinde tanımladığımızda, bu classımız içinden onlara erişebilmemiz için, private yerine public değeri kullanılmalıdır.

  •         Constructor (Yapıcı) Metodu Yazmak

public class_adı (Context context ) {
        super( context, db_adi, null,version ); }


  •         onCreate() Metodunu Yazmak ve Tablo Oluşturmak
Tablo oluşturma işlemlerini onCreate() metodu içinde yapıyoruz. Bu metot  öncelikle, programı ilk çalıştırdığımızda, entegre SQLite sunucumuz içindeki “sql_master” tablosuna bir sorgu çeker. Bu sorguda “tablo_adi” diye bir tablo mevcut mu diye bakar. Eğer yoksa “tablo_adi” adında bir tablo oluşturur ve o tablo içindeki alanları doldurur.



public  void onCreate(SQLiteDatabase db) {
       db.execSQL ( “CREATE TABLE” + tablo_adi + “(“ + ….. + “)” ) ; }


  •          onUpgrade() Metodunu Yazmak
Veritabanında herhangi bir değişiklik olduğunda onUpgrade() metodu çalıştırılır. Daha sonra bunun içerisinden çağrılan onCreate() metodu da değişiklikleri hayata geçirmeye yarar.


public void onUpgrade(SQLiteDatabase db, int eskiversiyon, int yeniversion) {
           db.execSQL(“DROP TABLE IF EXISTS” + tablo_adi );
           
onCreate(db); }

  •          Veritabanı İşlemleri İçin Gereksinimler
·         close() : Veritabanını kapatır.
·         getReadableDatabase() : Okunabilir bir veritabanı sunar. Select işlemleri için uygundur.
·         getWritableDatabase() : Yazılabilir bir veritabanı sunar. Update, delete ve insert işlemleri için uygundur.

  •       Queryleri  Çalıştırmak
SQLite hem bilinen SQL cümleciklerini (rawQuery) destekler, hem de kendi içinde özelleşmiş sorgulama metotları bulunmaktadır.
db.rawQuery( String sql, String [] selectionArgs)  : Bu döndürülen sonucu Cursor tipindeki bir değişkene atar.
·         SQLite’ın Özelleşmiş Metotları:

n  query(…)
n  insert(…)
n  delete(…)
n  update(…)

  •       Cursor Kullanımı
Veritabanı nesneleri içinde; kayıtlar arasında, satır bazlı hareket etmemizi sağlayan yapıdır.


Cursor c = new Cursor();


·         startManagingCursor(c) : Cursor üzerinde işlemler yapabilmeyi sağlar.
·         getCount() : Veritabanındaki kayıt sayısını döndürür.
·         moveToFirst() : Cursor, veritabanındaki ilk kayda gider.
·         moveToNext(): Cursor, bulunduğu konumdan bir sonraki kayda geçer.
·         IsAfterLast() : Son satırdan bir önceki mi sorgulaması yapar.

Bunların dışında, getColumnNames(), getColumnIndex(), getString(), getInt() metotları da kullanılır.

Tüm adımlar bu kadar. Tahmin ediyorum ki kafanızda bişeyler oturmaya başladı ama tam net olmadı. Bir sonraki derste yapılacak örnek ile konunun tam olarak anlaşılacağını umuyorum.

Ders 17: Android SQLite Giriş

30 Ocak 2012 Pazartesi
Android’de veritabanı denince aklımıza gelecek tek bir şey var :

SQLite
  • Android OS içinde veritabanı uygulamaları geliştirmek için kullanılır.
  • Android uygulamaları geliştirmek için, Android SDK'sını kurduğumuzda SQLite desteği de otomatikman gelir.
  • SQLite açık kaynak kodlu bir Sql sunucu motorudur. Bu yazılımın baştan aşağı bütün kodları kamuya açıktır. Dolayısıyla SQLite kodlarının her zerresini istediğiniz gibi kullanabilir, değişikliğe uğratabilir, satabilir ve ticari veya ticari olmayan uygulamalarınızda gönül rahatlığıyla kullanabilirsiniz.
  • Kısaca, Mssql, Mysql, Oracle ne ise SQLite da onların, daha küçük uygulamalar geliştirmek için çıkarılmış versiyonudur.
  • Sadece Android'e özgü değildir. SQLite, onlarca programlama dili ile kullanılabilir. Platformdan bağımsızdır.
  • Az yer kaplar.
  • SQLite veritabanında desteklenen veri tipleri şunlardır : "Text,Numeric,Integer,Real,None"
  • SQLite kullanan programlardan biri de Mozilla Firefox'tur.
  • Her veritabanı için bir dosya barındırır. Bu da veritabanının yedeklenmesini ve kopyalanmasını kolaylaştırır.
  • Tüm kütüphanenin boyutu 225kb'dır. Bazı özellikler çıkartılarak, bu boyut 170kb'a kadar indirilebilir. Bu sayede embedded ve ya symbian gibi platformlar için uygundur.
  • Sqlite, öteki pek çok veritabanı alternatifine göre basittir.
SQLite’ı bu kadar övmek yeter. Bir sonraki derste, SQLite ile veritabanı üzerinde çalışma adımları anlatılacak. 

Ders 16: Android Uygulamasına Ses Ekleme

Android projelerinde, özellikle oyun olanlarda ses, oyunun büyük bir parçasını oluşturuyor bence. Bu nedenle Android projesine ses eklemek ve onu çalabilmek önemli. Bakalım nasıl yapıyoruz?

·         Bir önceki konumda bahsettiğim siteden, kumru sesi indirdim. (.wav uzantılı )

·         Daha sonra Eclipse’de yeni bir Android projesi başlatıyoruz.

·         res dizini altına geliyoruz, raw adında bir dosya oluşturuyoruz ve indirdiğimiz ses dosyasını da bu raw dosyasının içine atıyoruz:
·         Bir buton yaratalım ve buna basılınca ses çıksın isteyelim. Bunun için main.xml içerisine geliyoruz ve bir buton yaratıyoruz:


<Button
        android:id="@+id/sesbutonu"
        android:text="Sesi Çal!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

·         Şimdi java dökümanımızın içine gidelim. Butonumuza erişelim, listenerı implement edelim ve OnClick(…) metodunu yazalım.(Burayı detaylı olarak anlatmıyorum, çünkü önceki derslerden bilindiğini varsayıyorum.)


package com.sesekleme;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.media.MediaPlayer;
public class SesEklemeActivity extends Activity implements OnClickListener {
    /**Called when the activity is first created. */
       Button sescal;
       MediaPlayer mp;
          
@Override   
public void onCreate(Bundle savedInstanceState) {      
super.onCreate(savedInstanceState);       
setContentView(R.layout.main);       
sescal =(Button)findViewById(R.id.sesbutonu);       
sescal.setOnClickListener(this);
     mp = MediaPlayer.create(this,R.raw.hardy98);
   }
       @Override
       public void onClick(View arg0) {
             // TODO Auto-generated method stub
             mp.start();                      
       }
}

Burada daha önceki örneklerde görmediğimiz sadece tek bir olgu var : MediaPlayer. Sesi çalmak için MediaPlayer sınıfını kullanıyoruz. Bunun için:

·         Import işlemini gerçekleştiriyoruz:


import android.media.MediaPlayer;

·         MediaPlayer cinsinden bir değişken oluşturuyoruz ve onun üzerinden dosyamızı çalacağımızı söylüyoruz:


MediaPlayer mp;
mp =MediaPlayer.create(this,R.raw.hardy98);

Burada dikkat etmeniz gereken şey “hardy98” benim ses dosyamın adı.

·         MediaPlayerın çalışmasını ve sesi çalmasını sağlıyoruz:


mp.start();



Uygulamayı çalıştırdığımızda karşımıza sadece bir tane buton çıkıyor ve butona bastığımızda da benim kumrularımın sesini duyuyoruz. :))

Hangi kuştan nasıl ses çıkar?

Komik bi konu gibi duruyor belki ama gerçekten ciddi ciddi yazıcam şimdi. :) Ben gayet kuş sever bi insanım. Öyleki camımda yaklaşık 20 tane kumru besliyorum. Hayvanlara düşkünüm. O yüzden kuş seslerini depolamış bir siteye rastladığımda, bunu anlatmadan, tavsiye etmeden geçemicemi düşündüm.

Aslında bu siteye rastlayışım da değişik bir yönden oldu.Android'de ses ekleme konusunu araştırırken, ne ses eklesem acaba yaaa diye düşünürken bu siteyi buldum ve kararımı verdim: Androidde ses ekleme dersinde, kuş sesi eklemeliyim dedim. Biliyorum biraz garibim. Ama belki benim gibi olan başkaları daha vardır ve bu sesleri duymak ister,kim bilir ? :))

<<<Siteye gitmek için<<<



Ders 15: Android Uygulama Icon'unu Değiştirme

Bir uygulama yapıp bunu çalıştırdığımızda, menü kısmında ona otomatik olarak bir icon atanır. Bu ikon şöyle bişeydir:

Uygulama iconu değiştirilse iyi olur, neticede sizin yaptığınız projeyi anlatacak ve özgün bişey olacak. Şimdi bakalım bunu nasıl değiştiriyoruz?

·         Öncelikli olarak 70x70 boyutunda .png uzantılı bir resim buluyoruz. ( Ben böyle buldum yani.)
·         Daha sonra bu resmi res>drawable-hdpi içerisine atıyoruz.
·         Daha önce yaptığımız hesap makinesi örneği için bunu uygulamak istiyorum. Uygulamayı açıyoruz ve AndroidManifest.xml dosyası içerisinde android:icon üzerinde gerekli değişikliği yapıyoruz. AndroidManifest.xml’i ilk açtığımızda şunu görüyoruz:

android:icon="@drawable/ic_launcher"

Burada “ic_launcher” yazan kısım resim dosyamızın adı. Benim yeni eklediğim dosyanın adı da “hesapmakinesi”. Dolayısıyla, yapmam gereken tek şey “ic_launcher”’ı silip yerine “hesapmakinesi” yazmak.

android:icon="@drawable/hesapmakinesi"


·         Uygulamayı çalıştırıp,menü kısmına girdiğimiz zaman ise eklediğimiz bu iconu görebiliyoruz:


Ders 14: Android Arkaplan Resmi Ekleme

29 Ocak 2012 Pazar
Androidde, bir uygulamayı çalıştırdığımızda karşımıza çıkan siyah ekrandan sıkıldık artık. Onun yerine başka bir resim koyma vakti geldi de geçti. Şimdi bunu nasıl yapacağımıza bakalım.

·         Öncelikle 320x480 boyutlarında, uzantısı .jpg olan bir resim buluyoruz.(Ben böyle kullandım yani.) Bu resmi uygulamamızın, res dizini altındaki drawable-hdpi içine atıyoruz. Benim resmimin adı new_theme.(Siz istediğiniz adı verebilirsiniz tabiî ki)

·        Daha sonra main.xml dosyamızın içerisine giriyoruz ve LinearLayout içerisine şunu ekliyoruz:


android:background="@drawable/new_theme"

Buradaki new_theme benim resim dosyamın adı. Sizinki neyse ona göre değiştirmeniz gerekiyor. Sonuç olarak LinearLayout kodumuz şöyle oluyor:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/new_theme">

Hepsi bu kadar.

Uygulamayı çalıştırdığımızda ise şu görüntü ile karşılaşıyoruz:


Ders 13: Android Strings.xml Kullanımı

Şimdiye kadar yaptığımız bütün projelerde, main.xml içerisindeki belirtimlerde, android:text değerini elimizle şipşak yazıverdik.

Android:text=”3k” gibi. Ancak genel kullanım böyle değil. Farz edin ki birçok yerde 3k yazıyor ve bir değişiklik yapıp 3k değerlerini değiştirmeniz, başka bir String yapmanız gerekiyor. Oturup, tek tek 3k yazan yerleri değiştirebilirsiniz. Ama düşünün o kadar çok varki… İşte bunun için, Android bize bir kısayol sunuyor, kolaylık sağlıyor: Strings.xml!

Bu dosya res>values> içerisinde bulunuyor. Şimdi bakalım nasıl kullanıyoruz?
·        
İçini ilk açtığımızda bu şekilde gözüküyor:



<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<string name="hello">Hello World,StringsOrnegiActivity!</string>
    <string name="app_name">StringsOrnegi</string>
</resources>

Buradan da anlaşabileceği üzere, <string name=””></string> yapısını kullanıyoruz. Burada name kısmına verdiğimiz değeri değişkenimiz gibi düşünebilirsiniz.<string></string> tagı arasında yazan ise o değişkene karşılık gelen ifade. Yani biz bir başka dosyada ( genelde tasarımı yaptığımız xml dosyasında) bu değişken adını kullandığımızda aslında ona karşılık gelen ifadeyi belirtmiş gibi oluyoruz. Burası biraz karışık gelmiş olabilir, onun için hemen bir örnekle gösterelim:

·         Strings.xml içerisine gelelim ve şu kodu yazalım:


<String name="buton">Ben bir butonum</String>

·         Main.xml içerisine gelelim ve şu kodu yazalım:


<Button
      android:id="@+id/button"
      android:text="@string/buton"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center" />

Burada her zamanki gibi id, boyut ve yer ataması yaptık. Ama bunlardan farklı olarak text değerini eskiden yaptığımız gibi belirlemedik.

Android:text=”@string/buton” ifadesinde demek istiyoruz ki; name’i buton olan stringi bul ve text değerine onu ata.Yani aslında text değerini “Ben bir butonum” olarak ata.

Görüntüye bakacak olursak da şöyle görüyoruz:
·         Strings.xml i sadece string değişkenleri için kullanmıyoruz. Renk verme işlemini de bunun aracılığı ile gerçekleştirebiliyoruz:

Strings.xml içerisine şu kodu yazıyoruz:


<color name="arkaplan">#4DBDF0</color>

Main.xml içine gelip LinearLayout özelliğimize color’ı ekliyoruz.Böylece arkaplanımız da istediğimiz renk olacak.


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@color/arkaplan">


Burada @string yerine @color yazdığımıza dikkat edin. Uygulamayı çalıştırdığımızda ise şöyle bir görüntü elde ediyoruz:

Yeni Ay

Ve 2.kitabı da bitirdim! Kitabı yaladım yuttum,süpürdüm resmen.

İlk kitap beni bu kadar sarmamıştı ama ikinci kitaba resmen ba-yıl-dım! O kadar sürükleyiciydi ki...Tam diyorum şu bölümü okıyım,sora bırakırım.Öyle bir yerde bitiyor ki bölüm,yaa diyorum yeni bölümü şimdi okumazsam çatlarım. Kurgusu çok güzel yapılmıştı bi kere, hiç sıkmıyordu. Ve kitapta Kurt Adamlar,Vampirler olmasına rağmen, verilmek istenen duygular,acılar o kadar gerçekciydi ki..

Edward, Bella'yı terk edince,sanki ben terk edilmişim gibi hissettim.Bella'nın içinde hissettiği o inanılmaz acıyı,o boşluğu,o hayatın anlamsızlığını ben yaşamışım gibi hissettim. Benim canım yandı sanki. Ve umursamaz davranıp,Edwardın sesini duyabilmek için yaptığı şeyler...Resmen büyüleyiciydi. Yeni bir çılgınlık yapsın,o sesi ben de duyayım istedim.Kitabın bazı yerlerinde gözlerim doldu.

Jacob Black'e sinir oldum.Bella'dan hoşlanmasına sinir oldum.Hatta Bella'nın onla yakın arkadaş olmasına bile sinir oldum. Niye bilmiyorum, ama hiç sevmedim. Bu kitapta Edward ne kadar çekici, cazibeli geldiyse, Jacob'ta o kadar itici geldi bana. Bazı yerlerde ölsün,gebersin istedim.

Edward'ı kurtarmak için yaptıkları yolculuk çok heyecanlı geldi, heyecanı hissettim.Sanki ben kurtarıcakmışım,benim yetişmem lazımmış gibi.Yazarı, bu nedenle gerçekten kutluyorum.

Yalnız takıldığım bir nokta var:Bella.Ulan herkes karıya aşık,ben burayı çözemedim.Neyine aşık oluyolar bunun? Sakarlığı mı şirin geliyor? Hastane bağımlısı olması mı? Sulu göz olması mı? Mike,Eric,Tyler,Edward,Jacob... Herkes peşinde koşturuyor hatunun.Bir içim su sanki.( Kıskandım mı,ne yaptım bilmiyorum.)

Şu an kendimi gayet teenager gibi hissediyorum. Vampir olmak istiyorum diyen kızları,Edwarddd aşkım benim diyen gençleri anlıyorum. Ha ben hala vampir olmak istemiyorum,hala Edward aşkımsınnn demiyorum. Ama gerçekten , bazı noktalarda kitaba kendimi kaptırıp iç çektiğim oluyor. Enteresan.

Ders 12: Android Activityler Arası Geçiş

Androidin önemli konularından biri de (proje bütünlüğü sağlayabilmek için) Activityler (ekranlar) arası geçiş. Bunu küçük bir örnek ile görelim:

·         Bir proje açtığımızda main aktivitemiz otomatik olarak oluşur. Main aktiviteden kasıt, main.xml tasarımını içeren ve uygulamayı çalıştırdığımızda karşımıza çıkan ilk ekran. Bu durumda bize düşen şey öncelikli olarak bu ekranın tasarımını gerçekleştirmek:

Main.xml içerisine geliyoruz ve tasarımımızı oluşturuyoruz:


<?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="fill_parent"
    android:orientation="vertical" >
  
<TextView
       android:text="2.ekrana gitmek için butona tıklayın."
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>  
   <Button
       android:id="@+id/git"
       android:text="Git"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center" />
</LinearLayout>


Container olarak LinearLayout kullandık. Bir TextView ile derdimizi anlattık ve tıklanınca bizi 2.ekrana götürecek bir buton koyduk. Butonun boyutu minnacık oldu, biliyorum. İsteyen wrap_content değeri yerine istediği boyutu belirleyebilir.

·         Şimdi sıra geldi 2.activitymizi (ekranımızı) oluşturmaya. Bunun için com. İle başlayan paketin üzerine geliyoruz, sağ tıklıyoruz ve New>Class seçeneğini seçiyoruz.


·         Karşımıza gelen New Java Class penceresinde Name kısmına istediğimiz ismi yazıyoruz. (Ben ikinciaktivite demeyi tercih ettim.) Browse kısmından SuperClass seçimini geliştiriyoruz. Type alanına “Activity” yazıyoruz ve alt kısmından da “Activity-android.app” seçeneğini seçiyoruz.Hepsi bu kadar.



·         Bu işlemden sonra karşımıza yeni oluşturduğumuz java sınıfımız gelecek. Ve içerisinde şu kodlar olacak:


package com.aktivitegecisi;
import android.app.Activity;
public class ikinciaktivite extends Activity {
}


·         Bunun içerisine, ilk activity sınıfımızdan (main activity, hazır olarak gelen) copy-paste yaparak, doğru yerlere sırasıyla şu kodları yapıştırıyoruz:


import android.os.Bundle;
@Override   
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
setContentView(R.layout.main);
    }


·         Yani 2.activity sınıfımızın içi de şu şekilde gözükecek:

package com.aktivitegecisi;
import android.app.Activity;
import android.os.Bundle;
public class ikinciaktivite extends Activity {
        @Override
           public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.main);
        }
}


Burada setContentView (bilindiği üzere tasarımı göstermeye yarıyor) parametresi  R.layout.main , yani main.xml tasarımı çağrılıyor.Oysaki biz istiyoruz ki bizim 2.ekranımızın tasarımı farklı olsun.

·         2.ekran görüntümüzü oluşturmak için, yeni bir XML dosyası yaratmamız gerekiyor.Bunun için, uygulamamızı çalıştırdığımız “run” butonunun 2 solunda bulunan ve açıklaması “Opens a wizard to help create a new Android XML File” olan butona tıklıyoruz. Burada File kısmına 2.java dosyamızın adını ( ben ikinciaktivite demiştim) yazıyoruz (bu bildiğim kadarıyla şart değil, ama bana xml dosyası ile java dosyası arasındaki bağlantıyı hatırlatacağı için daha rahat geliyor),  root element olarak layout tipini seçiyoruz.Mesela LinearLayout gibi. Bir sonraki sayfaya geçiyoruz. Burada ekranımızın bazı özelliklerini ve hangi dizinde olacağını ayarlayabiliyoruz. Ben bir değişiklik yapmadan,bu sayfayı da sonlandırıyorum. 



·         Karşımıza oluşturduğumuz xml dosyası geliyor.İçerisinde şu anda şu anlar yazılı:

<?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:orientation="vertical" >
</LinearLayout>

İstediğimiz bir tasarımı içerisinde gerçekleştiriyoruz. Ben şimdilik sadece bir TextView koyuyorum:


<TextView
       android:text="2.ekrana hoşgeldiniz"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center" />


·         2.ekranımızın nasıl görüneceğini belirledikten sonra, ikinciaktivite.java dosyamıza gidiyoruz ve setContentView metodunun parametresini değiştiriyoruz:


setContentView(R.layout.ikinciaktivite);


Artık 2.ekranımızın görüntüsü ikinciaktivite.xml içinde belirlediğimiz gibi gözükecek.

·         Şimdi ekranlar arasındaki bağlantıyı sağlayalım. İlk java dosyamızın tasarımında bir TextView ve Button vardı. Butona tıklayınca, 2.sayfaya geçicektik. Bu yüzden ilk java dosyamızın içine gelip, bu butona erişip ona bir dinleyici atamamız gerekiyor.
·         Daha önceki örneklerde olduğu gibi bunda da, import işlemini, implement işlemini, findViewById ile butona erişim işlemini ve OnClick metodunu yazma işlemini gerçekleştiyoruz. Sonuçta ilk java dosyamız ( main activity) şöyle oluyor:


package com.aktivitegecisi;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AktivitegecisiActivity extends Activity implements OnClickListener {   
/** Called when the activity is first created. */
          Button git;
   
@Override   
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);       
setContentView(R.layout.main);       
git = (Button)findViewById(R.id.git);       
git.setOnClickListener(this);
   }
@Override
public void onClick(View arg0) {
     // TODO Auto-generated method stub
      startActivity(new Intent(AktivitegecisiActivity.this,ikinciaktivite.class));
           
       }
}


Burada daha önceki örneklerden farklı olan tek bir kısım var. O da onClick(…) metodu içerisindeki alan. Intent kavramı daha sonraki derslerde anlatılacak, ondan dolayı ona fazla takılmayın. Parametre olarak da bi o anda bulunduğumuz sınıfın adını kullandığımıza, bir de gideceğimiz sınıfın adını kullandığımıza dikkat edin, o kadar.

·         Uygulamayı çalıştıralım, bakalım olmuş mu?  Hata vereceğini düşünüyorum, çünkü en önemli şeyi unuttuk!
·         İlk dersler de söylediğimiz gibi bir activity’nin çalışması için mutlaka AndroidManifest.xml içerisinde tanımlanması gerek! Bunun için AndroidManifest.xml içerisine geliyoruz ve activitymizi ekliyoruz.Ekleme işlemini Application tagları arasında, en son kapanmış activity tagının hemen ardına yazıyoruz:
·         Artık işlem tamam.2 ekranımız var ve aralarında geçiş yapabiliyoruz.