3 Temmuz 2020 Cuma

Kotlin-4 (Android kotlin switch activity - Farklı ekranlar arasında geçiş yapmak)


Merhaba,
bu yazı yine bir android ve kotlin projesi üzerine olacak. Geliştirilecek uygulamada iki ekran arasında geçişler(navigation) olacak.
Örnek uygulama geliştirilirken Home ve Login screen üzerinde örneklenmiştir. Login ekranında user ve password adında iki input bulunmaktadır. 
user ve input alanına aynı string ifadeler girilirse kotlin ile kontrol yapılarak Home screen'e yönlendirme yapılmaktadır. 
Eğer girilen bu iki bilgi örtüşmüyorsa uygulama kullanıcısı bir Toast mesajıyla bilgilendirilmektedir. 
Aşağıdaki adımlar uygulanarak sonuçlar incelenebilir.

NOT: İsimlendirmenin daha anlamlı ve anlaşılabilir olması adına uygulamda varsayılan olarak oluşan MainActivty yeniden isimlendirilerek HomeActivity oluşturulmuştur. Bununla birlikte diğer ekran için de LoginActivty oluşturulmuştur. Bu iki ekran arasında geçiş yapmak için kodlama yapılmıştır.

İlk olarak Android Studio aracılığıyla  kotlin ile geliştirme yapılacak şekilde bir Android projesi oluşturulur.

MainActivty.kt' yi HomeActivity.kt olarak yeniden adlandırın ve yanına LoginActivity.kt dosyasını oluşturun.

AndroidManifest.xml dosyasına giderek HomeActivity tanımlamasını yapın.



<activity
android:name="com.tutorials.switchbetweenscreens.HomeActivity">
</activity>

 

 

LoginActivity nin AndroidManifest.xml' de main activitiy olarak işaretlendiğinden emin olun.



<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

 


Üstte varsayılan ekran olarak Login ekranı tanımlanmıştır. Ayrıca yapılan tanımlamayla Home ekranına geçişin önü açılmıştır. 

 

res/layout/activity_home.xml dosyası LinearLayout olarak tanımlanarak içine LoginScreen'e geçiş yapmayı sağlayan buton yerleştirilir.



<LinearLayout
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"
android:gravity="center"
android:orientation="vertical"
tools:context=".HomeActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20sp"
android:text="Home Screen..."
android:textSize="25sp" />

<Button
android:id="@+id/goToLoginBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#397bb2"
android:padding="20sp"
android:text="Back To Login"
android:textColor="#FFF" />
</LinearLayout>

 


Diğer yandan HomeActivity.kt dosyasına gidilerek xml de tanımlanan buton'a basınca LoginActivity'e geçiş yapması için aşağıdaki satırları onCreate methoduna eklenir.



goToLoginBtn.setOnClickListener {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
}

 

 

res/layout/activity_login.xml dosyası oluşturularak LinearLayout içinde 2 adet editText(user ve password) ve bir Button eklenir.



<LinearLayout
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"
android:gravity="center"
android:orientation="vertical"
tools:context=".LoginActivity">

<EditText
android:id="@+id/userTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Username"
android:inputType="text" />

<EditText
android:id="@+id/passwordTxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Password"
android:inputType="textPassword" />

<Button
android:id="@+id/goToHomeBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#397bb2"
android:padding="20sp"
android:text="Login"
android:textColor="#FFF" />

</LinearLayout>


 


Son olarak Login kontrolleri için  LoginActivty.kt dosyasının onCreate methoduna giderek aşağıdaki tanımlama yapılmalıdır.



goToHomeBtn.setOnClickListener {

val username = userTxt.getText().toString();
var password = passwordTxt.getText().toString();

println("username : $username")
println("password : $password")

if (username.equals("") || password.equals("")) {
val errMsg = "Kullanıcı Adı ve Şifre boş olamaz!"
Toast.makeText(this, errMsg, Toast.LENGTH_SHORT).show();
} else if (!username.equals(password)) {
val errMsg = "Kullanıcı Adı ve Şifre aynı olmalıdır!"
Toast.makeText(this, errMsg, Toast.LENGTH_SHORT).show();
} else {
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
}

 

 


Ekranlar arasında geçişi  vuruglamak için her iki activity'nin de arkaplan renkleri(backgroundColor) değiştirilmiştir. Değişikliği yapan kod aşağıdadır.



getWindow().getDecorView().setBackgroundColor(Color.GRAY);

 

 

uygulamanın kaynak kodlarına aşağıdaki adresten ulaşabilirsiniz.
github: https://github.com/lvntyldz/tutorials/tree/master/kotlin-android-app-examples/04-switch-between-screens

Hiç yorum yok:

Yorum Gönder