Android programlama öğrenmeye devam ediyoruz. Bu derste intent filtrenin çalışmasını daha iyi anlamak için, geçen dersteki uygulamayı geliştireceğiz.
Geçen derslerimizde Implicit Intent (Gizli niyeti) konusundan bahsettik. Konuyu daha iyi anlamak için uygulamaya bir etkileşimi daha ekleyeceğiz. Etkileşim Intent Filter’i kullanılacak. Amacımız uygulama etkileşimi (Activity) aradığı zaman birden fazla etkileşimi bulsun. Bunu sağlamak için etkileşimde aynı action’u = tr.technopat.intent.action.showdate (faaliyet) kullanacağız. Yeni etkileşim yine tarihi gösterecek ama biraz başka formatta. Yeni etkileşimin ismi ActivityDateEx olsun. Layout dosya aynı kalsın date.xml.
ActivityDateEx oluşturalım:
import java.sql.Date; import java.text.SimpleDateFormat; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class ActivityDateEx extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.date); SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d, yyyy"); String date = sdf.format(new Date(System.currentTimeMillis())); TextView tvDate = (TextView) findViewById(R.id.tvDate); tvDate.setText(date); } }
Kodda gördüğümüz gibi tarih formatında tek bir fark vardır. Uygulamayı kaydedelim ve çalıştıralım. Show date butonuna basıyoruz ve aşağıdaki gibi seçimi görüyoruz:
Intent iki etkileşimi (Activity) bulmuş ve uygulamanın ve package explorer’ın ismini gösterdi. İki etkileşim de bizim uygulamaya ait o yüzden hangi etkileşimin ne olduğunu anlamak zor oluyor. Bu problemi çözmek için isimleri değiştireceğiz. Manifest dosyasında etkileşim (Activity) için label (Etiket)özelliği değiştireceğiz.
Date basic ActivityDate için
Date extended ActivityDateEx için
Kaydedelim ve çalıştıralım. Show date butonuna basıyoruz ve aşağıdaki gibi seçimi görüyoruz:
Böyle daha iyidir. Date extended seçildiği zaman ActivityDateEx etkileşimi karşımıza geliyor.
Eğer projede bir zorluk çekiyorsanız yardım için aşağıda Manifest dosyasının kodunu veriyorum.
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="tr.example.intentfilter"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"
android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="tr.example.intentfilter.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><activity android:name="ActivityTime"><intent-filter><action android:name="tr.technopat.intent.action.showtime"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity><activity android:name="ActivityDate" android:label="Date Basic"><intent-filter><action android:name="tr.technopat.intent.action.showdate"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity><activity android:name="ActivityDateEx" android:label="Date extended"><intent-filter><action android:name="tr.technopat.intent.action.showdate"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity></application></manifest>
Bu dersimizde Intent, Intent Filter ve action uygulamayı kullanarak çalışmanın prensiplerini daha ayrıntılı araştırdık. Gelecek derste action’u Intent’ten okumayı öğreneceğiz.