Login Screen Nasıl Yapılır

Casper4684

Yeni üye
13 May 2020
41
0
Eğer uygulamamızda ufak veriler tutmak istiyorsak ve uygulama kapansa da bu verileri kaybetmemek istiyorsak shared preferences tam olarak da bu iş içindir. Bu yazımda shared preferences’in etkin olarak kullanıldığı login screen ; yani kullanıcı giriş ekranını tasarlayıp kodlayarak ilerleyeceğiz.

2 tane sayfamız olacak bir tanesi MainActivity. Digeride giriş yapıldıkdan sonra yönlendireceğimiz sayfa . Onu da ben HomeActivity olarak adlandıracağım. MainActivity tasarımını email ve password girişi olacak şekilde yapıyorum. Siz seçenekleri arttırabilirsiniz.
activity_main.xml
Kod:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/email"
        android:layout_gravity="center"
        android:layout_marginTop="150dp"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:inputType="textPersonName"
        android:hint="E-Mail"/>
    <EditText
        android:id="@+id/password"
        android:layout_gravity="center"
        android:layout_marginTop="50dp"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:inputType="textPassword"
        android:hint="Password"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonLogin"
        android:text="Login"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"/>
    
</LinearLayout>








Tasarım işlemi tamamlandı. MainActivity içerisinde tasarımda oluşan nesneleri tanıtarak devam edelim . Sonrasında ise SharedPreferences kullanımı için SharedPreferences tipinde bir nesne tanımlayarak ilerleyelim.

Tanımlanan nesneye getSharedPrefences ile bir xml dosyası tanımlayalım .

Kod:
SharedPreferences sharedPreferences ;
sharedPreferences = getSharedPreferences("xmlDosyaAd",MODE_PRIVATE);

Ve SharedPreferences düzenleme - veri ekleme - silme işlemleri için bir editör oluşturalım.

SharedPreferences.Editor editor = sharedPreferences.edit();
Sonrasında Login butonuna setOnClick vererek içerisini dolduralım.

xml içerisinde email ve password tutabilmek için xml içerisinde değişken tanımlayarak putstring ile içerisinde girilen verileri yerleştirelim. Sonrasında commit ederek HomeActivity içerisine yönlendirelim. putstring metodu tıpku hashmap gibi çalışır. Key-value değer ataması editor nesnesi ile yapılır. Login buttonu setOnClick içerisine email ve password edittexlerinden gelen değerleri value olarak alacağız. Ve sonrasında da HomeActivity sayfasına geçiş yapacağız.



Evet herşey çok güzel değil mi ? Bence değil :) “Bence de değil“ dediğinizi duyar gibiyim. Sorunumuz belli. Uygulamayı kapatıp açtıkdan sonra tekrar giriş ekranı geliyor.Biz bunun yerine daha önce giriş yaptığımız için HomeScreen ekranı gelmeli. Bunu nasıl düzeltebiliriz sizce ? Hadi biraz düşünelim…

Evet . Sanırım buldunuz. Email ve password için birer değişken tanımlayıp boş olup , bu değişkenleri de xml dosyasına kaydettiğimiz yerden getstring metodu ile çekersek dolu mu boş mu olduğunu anlayabiliriz :) Çok mantıklı , öyleyse MainActivity içerisinde Login.setOnClick fonksiyonu üzerine tanımlama işlemlerini yapalım.

Kod:
String email_control = sharedPreferences.getString("email",null);
String passwordcontrol=sharedPreferences.getString("password",null);

if(email_control != null && password_control != null){
    startActivity(new Intent(this,HomeActivity.class));
    finish();
}

Tanımlama işlemini yaptıkdan sonra sharedPreferences nesnesiyle birlikte getString metodunu kullanarak shared ile tanımladığımız xml dosyası içerisindeki “email”- “ password” keyleri içerisindeki değerleri aldık. Eğer içerisinde herhangi bir değer yok ise default olarak null atadık. Sonrasında ise xml içerisindeki keyler içerisinde null değere sahip kod var ise login ekranını atlayarak direk olarak HomeScreen ekranına gitmesini istedik.
Herşey iyi güzel peki bu adam nasıl çıkış yapar ki ? Uygulamayı silsin yüklesin bizi uğraştırmasın dersek kendimize ayıp etmiş oluruz. HomeScreen içerisinde hemen bir tane çıkış yap yani logout butonu koyalım.


HomeActivity.xml

Kod:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".HomeActivity">

    <Button
        android:id="@+id/logout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="LogOut"
        android:layout_marginTop="300dp"
        android:layout_gravity="center"

        />
</LinearLayout>

HomeActivity.class
HomeActivity içerisinde koyduğumuz çıkış butonunu işlevsel hale getirmek için butonu tanıtıyoruz. Yine aynı şekilde SharedPreferences ve Editor nesnelerinden editor tanıtımı yapıyoruz.
Logout.setOnClick içerisinde ;

Kod:
editor.clear();
metodu ve yapılan değişikliklerin uygulanması için;
Kod:
editor.commit();
ile tutulan verileri sıfırlayarak ,
Kod:
startActivity(new Intent(HomeActivity.this,MainActivity.class));
finish();
ile HomeActivity içerisinden login ekranımıza tekrar dönüş yapıyoruz.
Burada ve daha önce finish() methodu kullanmamızın sebebi kullanıcı “Back” tuşunu bastığında tekrardan HomeActivity içerisine dönmesini engellemektir. Bir anlamda stack’den activity’i yok ediyoruz.


Android - Java dilini kullanılarak sharedPreferences üzerinden nasıl login screen yapılır bunu anlatmaya çalıştım.
Kaynak kodlara erişmek isteyenler içinde github linkimi bırakıyorum Teşekkürler

https://github.com/talhasaglam153/LoginScreenSharedPrefences
 
Son düzenleme:

Roviend

Katılımcı Üye
29 Şub 2020
302
8
૨&#945
Activity içinde bulunan edittext,button,textview vb. her telefonda farklı farklı konumlarda çıkmaması için merkeze yerleştirilebilir bunun yanında constantine layout kullanılabilir.Yanlış hatırlamıyor isem.

Ellerinize sağlık yararlı konu olmuş
 

Casper4684

Yeni üye
13 May 2020
41
0
Activity içinde bulunan edittext,button,textview vb. her telefonda farklı farklı konumlarda çıkmaması için merkeze yerleştirilebilir bunun yanında constantine layout kullanılabilir.Yanlış hatırlamıyor isem.

Ellerinize sağlık yararlı konu olmuş

Dediklerinize katılıyorum sadece kayma olmayacağı için nesne sayısı az diye bu şekilde uyguladım layout kısmı değiştirilebilir dediğiniz gibi. Teşekkürler
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.