BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > Android Programlama > Aktivite ekleme

Aktivite ekleme

Şu ana kadar programlarımızda sadece tek bir program penceresi kullandık. Bu bölümde ana aktiviteye ek olarak bir aktivite daha eklemeye ve kullanmaya çalışacağız.

Bir program içinde yter alan birden fazla aktivite bulunduğunda; aktivitelerin birbiri ile bir bağlantısı vardır. Böylece bir aktiviteden diğerine geçiş yapılabilir.

Programı oluşturma

1. Öncelikle Adım Adım Program bölümünde gösterildiği şekilde yeni bir Android projesi oluşturun. Sadece programın adını aşağıdaki resimde gösterildiği gibi MultiActivity Prog olarak ayarlayın:

2. Otomatik olarak oluşturulan ve ekrana "Hello world!" ifadesini yazan TextView ile ilgili verileri projeden silmek için:

activity_main.xml dosyası içinde aşağıda turuncu ile gösterilen satırları silin:

<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" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />

</RelativeLayout>

Artık, projeye istediğimiz eklemeleri yapabiliriz.

Diğer aktiviteleri oluşturma

Programızda ana aktivite dışında oluşturacağımız aktiviteye geçiş yapacağız. Şimdi aktiviteyi oluşturmaya çalışalım:

1. Araç çubuğunda New butonuna tıklayın:

2. Karşınıza gelen pencerede Android Activity seçeneğini seçin ve Next butonuna tıklayın:

3. Karşınıza gelen pencerede Blank Activity seçeneği seçili iken Next butonuna tıklayın:

4. Karşınıza gelen penceredeki değerleri aşağıdaki tabloya göre doldurun ve Finish butonuna tıklayın:

Project: MultiActivityProg

Activity Name: SadeActivity

Layout Name: activity_sade

Hierarchical Parent: com.example.multiactivityprog.MainActivity

Title: Sade Activity

5. Bu durumda, Eclipse IDE aşağıdaki resimde gösterilen SadeActivity.java ve activity_sade.xml adlı 2 adet dosyayı otomatik olarak oluşturur ve projenize dahil eder:

Ayrıca, AndroidManifest.xml dosyasına yeni oluşturulan aktivite ile ilgili bilgileri ekler.

Android projenize eklediğiniz her yeni aktivite için aşağıdaki 3 işlem mutlaka uygulanmalıdır:

1. Kaynak kod dosyasının oluşturulması(SadeActivity.java)

2. Ekran görüntü dosyasının oluşturulması(activity_sade.xml)

3. AndroidManifest.xml dosya içeriğinin değiştirilmesi

Oluşturulan dosyalar ile AndroidManifest.xml dosyası içeriği aşağıdaki gösterildiği gibidir:

SadeActivity.java

package com.example.multiactivityprog;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class SadeActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sade);
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_sade, menu);
        return true;
    }

    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

activity_sade.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" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world"
        tools:context=".SadeActivity" />

</RelativeLayout>

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.multiactivityprog"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SadeActivity"
            android:label="@string/title_activity_sade" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.multiactivityprog.MainActivity" />
        </activity>
    </application>

</manifest>

Metinlerin düzenlenmesi

Ekranda gösterilen metinleri değiştirmek için aşağıda gösterilen dosyalarda gerekli düzenlemeleri yapalım:

strings.xml

Turuncu ile gösterilen satırı silin, yeşil renkle gösterilen satırı ekleyin:

<resources>

    <string name="app_name">MultiActivity Prog</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="hello_world">Hello world!</string> 
    <string name="str_altaktivite">Alt aktivite ekranı</string>
    <string name="title_activity_sade">Sade Activity</string>>
	
</resources>

activity_sade.xml

Dosyada hello_world yerine str_altaktivite yazın:

<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" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/str_altaktivite"
        tools:context=".SadeActivity" />

</RelativeLayout>

Ana aktiviteye geçiş butonu ekleme

Şimdi, activity_main.xml içinde bir buton tanımlaması, strings.xml içinde butonda kullanılacak metin tanımlaması yapalım:

activity_main.xml
<Button
    android:id="@+id/button_show"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"    
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:text="@string/button_showstr"	
    android:onClick="showActivity"/>

strings.xml

<resources>

    <string name="app_name">MultiActivity Prog</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="str_altaktivite">Alt aktivite ekranı</string>
    <string name="button_showstr">Aktivite göster</string>
    <string name="title_activity_sade">Sade Activity</string>>

</resources>

Buton metodunu oluşturma

Ana aktivite ekranına yerleştirdiğimiz butona tıkladığımızda yapacağı işlemi tanımlamak için showActivity metodunda yer alacak kodları MainActivity.java dosyasındaki MainActivity sınıfı içine ekleyebiliriz:

public void showActivity(View view) {        
    Intent intent = new Intent(this, SadeActivity.class);        
    startActivity(intent);
}

Bir aktiviteye geçiş yapmak için Intent nesnesi kullanılır. Burada, intent nesnesi tanımlanırken başlatılmak istenen aktivite açıkça belirtilmiştir (SadeActivity.class). Bu tür kullanımlar intent'lerin direk kullanımı olarak tanımlanır. Intent kullanırken hedefin açıkça belirtilmediği durumlarda ise Android yüklü cihazda yüklü olan ve kullanıcının talebini karşılayacak tüm programlar bu çağrıya cevap vermek üzere kullanıcıya sunulur. Kullanıcı bunlardan dilediğini seçer ve kullanır.

Eclipse IDE ortamında, Ctrl + Shift + O tuş bileşimine basarak yeni kodlar için ihtiyaç duyulan aşağıdaki sınıfları MainActivity.java dosyasına dahil edin:

import android.content.Intent;
import android.view.View;

Program dosyalarının son durumu

Program yer alan dosyaların son durumu aşağıda gösterildiği gibi olacaktır:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.multiactivityprog"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SadeActivity"
            android:label="@string/title_activity_sade" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.multiactivityprog.MainActivity" />
        </activity>
    </application>

</manifest>

MainActivity.java

package com.example.multiactivityprog;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
    public void showActivity(View view) {        
    	Intent intent = new Intent(this, SadeActivity.class);        
        startActivity(intent);
    }
}

SadeActivity.java

package com.example.multiactivityprog;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class SadeActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sade);
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_sade, menu);
        return true;
    }

    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

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" >

    <Button
    android:id="@+id/button_show"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"    
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:text="@string/button_showstr"
    android:onClick="showActivity"/>

</RelativeLayout>

activity_sade.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" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/str_altaktivite"
        tools:context=".SadeActivity" />

</RelativeLayout>

strings.xml

<resources>

    <string name="app_name">MultiActivity Prog</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="str_altaktivite">Alt aktivite ekranı</string>
    <string name="button_showstr">Aktivite göster</string>
    <string name="title_activity_sade">Sade Activity</string>

</resources>

Programı çalıştırma

Programı çalıştırdığınızda aşağıdaki resimde gösterilen ekran karşınıza gelir:

Ekrandaki butona tıkladığınızda, program içindeki diğer aktivite ekranda gösterilir: