Android programlama öğrenmeye devam ediyoruz. Bu derste intent filter’in ve action’ın çalışması daha iyi anlamak için geçen dersteki uygulamayı kullanacağız.
Önceki iki dersimizde action, intent ve intent filter’in çalışmasını öğrendik. Intent Filter’in bir özelliği daha var; birden fazla action içerebilir. Bu özelliği etkileşime (Activity) birden fazla faaliyet (eylem) yapmayı imkanı sunuyor. Etkileşim farklı Intent ve farklı action ile uyumu sağlayabiliyor.
İkinci güzel özelliği çağırılan etkileşim Intent’e ait action’u okuyabiliyor. Yani etkileşim Intent’in parametrelerini (action,data ve category) kullanabiliyor.
Uygulamada bir tane etkileşim oluşturacağız. Intent Filtre action = tr.technopat.intent.action.showtime ve action = tr.technopat.intent.action.showtdate için ayarlayacağız. Bu adımlardan sonra tek etkileşim saati ve tarihi gösterebilecek. Sonra Intent action = tr.technopat.intent.action.showtime veya action = tr.technopat.intent.action.showdate kullanarak tek etkileşimi çağıracağız. Etkileşimin saatini veya tarihini, yani hangisini göstermek istiyorsak action’u Intent’ten okuyacağız. Yukarıdaki yazdığımı daha iyi anlamak için proje oluşturalım.
- Project name: P0030_GetIntentAction
- Build Target: Android 4.2
- Application name: GetIntentAction
- Package name: tr.example.GetIntentAction
- Create Activity: MainActivity
Main.xml ve MainActivity.java 28’ci dersteki gibi olacak. Yeni etkileşimi oluşturalım. İlk başta layout dosya info.xml olsun.
<?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"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tvInfo" android:text="TextView" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:textSize="30sp"> </TextView> </LinearLayout>
Ekranda bir tane TextView olacak.
Etkileşimi oluşturalım. İsmi Info.java olsun.
import java.sql.Date; import java.text.SimpleDateFormat; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class Info extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.info); // Activity cagirilan Intenti aliyoruz Intent intent = getIntent(); //Intenten action okuyoruz String action = intent.getAction(); String format = "", textInfo = ""; // actiona gore degiskenleri dolduruyoruz if (action.equals("tr.technopat.intent.action.showtime")) { format = "HH:mm:ss"; textInfo = "Time: "; } else if (action.equals("tr.technopat.intent.action.showdate")) { format = "dd.MM.yyyy"; textInfo = "Date: "; } // format degiskene gore // datetime degiskene saati veya tarihi aliyoruz SimpleDateFormat sdf = new SimpleDateFormat(format); String datetime = sdf.format(new Date(System.currentTimeMillis())); TextView tvDate = (TextView) findViewById(R.id.tvInfo); tvDate.setText(textInfo + datetime); } }
getIntent() metodu kullanarak Intent’i alıyoruz ve action’a göre metni (TextView) ekrana çıkarıyoruz.
Yeni etkileşimi Manifest’e kayıt etmesini ve Intent Filter ile beraber iki action, category oluşturmayı unutmuyoruz. Label alanında Date/time info giriyoruz.
Kaydedelim ve çalıştıralım.
Show time butonuna basalım. Aşağıdaki verdiğim resmi görebilirsiniz:
Sistem bize iki seçimi sunuyor. Date/time info oluşturduğumuz etkileşim. Sorun Intent Filter seçimi nereden aldığını? Cevabı geçen dersten ActivityTime etkileşimi. Intent Filter ismi, label alanında boş kaldığından kaynaklıyor.
Date/time seçildiği zaman bugünkü oluşturduğumuz etkileşimi çalıştırıyor.
IntentFilter seçildiği zaman geçen dersten etkileşimi gösteriyor. Şimdi Show date butonuna basalım:
Yine Date/time info ve iki tane geçen dersten kalan etkileşimi görüyoruz. Tüm etkileşimler Intent Filtre’de action = tr.technopat.intent.action.showdate içeriyorlar. Date/time info seçelim:
Ders Sonu Notları:
Bu derste tek etkileşimi (Activity) farklı action’ları kullanarak çağrılabilmeyi gördük. Etkileşim action’ı okuduktan sonra gerekli işlemleri gerçekleştiriyor. Intent etkileşimi aradığı zaman tüm sistemi araştırıyor. Bizim örnekte sistemde geçen derslerden kalan etkileşimleri de bulmuş. Gelecek derste Intent’i kullanarak verileri (Data) göndermeyi öğreneceğiz.