Android Kullanici Girisi ve SharedPreferences Kullanimi

Giris sayfamizi tasarlayarak kullanici girisi yapacagiz. Yani kullanici adi ve sifre isteyecegiz bunu dogru girenler projemize ulasabilecek. Yeni hesap ve sifre degistirme gibi islemlerde yapacagiz.

Ayriyeten bu dersimizde check box kullanimini bazi buton edittext gibi seylerin visible ve gone yani görünür ve görünmez yapilmasini ögrenecegiz.

Ilk olarak asagida görüldügü sekilde bir tasarim yapariz. Yani kullanici girisi için kullanici adi ve sifre alani ve giris yap butonu. Sifre degistirmek için önceki sifre text alani ve sifre degistir butonu. Ve yeni hesap için de ayri bir buton tasarlariz.

Bu tasarim için gerekli kod yapisi asagida verilmistir. Baslangic.xml sinifinin tasarim kodlari…

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/ysl"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/bsKulAd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="31dp"
        android:ems="10"
        android:hint="@string/kullan_c_ad_" 
        android:textColor="#000000">

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/bsSifr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/bsKulAd"
        android:layout_marginTop="18dp"
        android:ems="10"
        android:hint="@string/sifre_"
        android:inputType="text" 
        android:textColor="#000000"/>

    <EditText
        android:id="@+id/bSonceki"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/bsSifr"
        android:layout_marginTop="14dp"
        android:ems="10"
        android:hint="@string/onceki_sifre_" 
        android:textColor="#000000"/>

    <Button
        android:id="@+id/BtnGirs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/bSonceki"
        android:layout_marginTop="18dp"
        android:text="@string/giris_yap" />

    <Button
        android:id="@+id/BtnYnSfr"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/BtnGirs"
        android:text="@string/sifre_de_i_tir"
        android:textColor="#ffffff" />

    <Button
        android:id="@+id/YnHsp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/BtnYnSfr"
        android:layout_toRightOf="@+id/checkBx1"
        android:text="@string/yeni_hesap" />

    <CheckBox
        android:id="@+id/checkBx1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/YnHsp"
        android:layout_alignBottom="@+id/YnHsp"
        android:layout_alignParentLeft="true"
        android:text="@string/yeni_sifre"
        android:textColor="#ffffff"
         />

</RelativeLayout>

 

Simdi de baslangicMain.java sinifini yapalim. Ilk olarak adim adim onCreate() metodunu anlatalim. Hangi görsel .xml sinifiyla bagli oldugunu belirttik: baslangic.

Tasarimda kullnadigimiz buton, checkbox, edittext gibi yapilarin nesnesini olusturuyoruz.

super.onCreate(savedInstanceState);
setContentView(R.layout.baslangic);

final Button yeniSfr = (Button) findViewById(R.id.BtnYnSfr);
final Button yeniHsb = (Button) findViewById(R.id.YnHsp);
final Button giris =(Button) findViewById(R.id.BtnGirs); 
final EditText Kuladi=(EditText) findViewById(R.id.bsKulAd);
final EditText sifre=(EditText) findViewById(R.id.bsSifr);
final EditText Onckisifre=(EditText) findViewById(R.id.bSonceki);
final CheckBox chcBox = (CheckBox)findViewById(R.id.checkBx1);

Programimiz ilk çalistigi anda nelerin görünmesini istemiyorsak onlari ayarlariz. Bizde ilk basta yeni sifre butonunun önceki sifre text alaninin ve yeni hesap butonunun görülmesinin istemiyoruz. En basta kullanici girisi için gerekli olan alanlarin ve diger islem alanlarini açacak oldugumuz checkbox alani görünür olacak.

yeniSfr.setVisibility(Button.GONE);
Oncekisifre.setVisibility(EditText.GONE);
yeniHsb.setVisibility(Button.GONE);

Yeni sifre ibaresinin yazili oldugu check box seçildiginde yeni sifre butonu önceki sifre text alani gelecek ve giris butonu görünmez olacak.

SharedPreferences ile kullanici girisi islemi yapacagiz. Bu bir çesit kayit alma islemidir. Bir nevi veritabani gibi düsünülebilir. Ama kullanimi biraz daha kolaydir. Bazi çesitli islemler içinde kullanilabilir.

Biz asagidaki kod blogunda da SharedPreferences içerisinde herhangi kayitli sifre var mi diye bakiyoruz. Eger hiç kayitli sifre yoksa bu demek oluyor ki hiç hesap açilmamistir. Ekran ilk açildiginda yeni hesap açma butonunun görünür olmasi, giris butonunun ve check boxun görünmez olmasi gerekir ki bu sayede proje ilk çalistiginda yeni hesap açilabilsin. Eger hesap varsa sistemde kayitli bu islem yapilmayacaktir.

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
	     String kayitliSfr = preferences.getString("KullSifre", ""); 
	     if(kayitliSfr.equals("")){
	    	 yeniHsb.setVisibility(Button.VISIBLE);
	    	 chcBox.setVisibility(CheckBox.GONE);
	    	 giris.setVisibility(Button.GONE);	    	 
	     }

Yeni sifre yazili check box seçildiginde yeni sifre butonu ve önceki sifre text alani aktif hale gelir. Giris yap butonu ise görünmez olur.

chcBox.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				if (chcBox.isChecked()){
					yeniSfr.setVisibility(Button.VISIBLE);
					giris.setVisibility(Button.GONE);
					Onckisifre.setVisibility(EditText.VISIBLE);
				}
	          }
	      });

 

Simdi giris butonunun tiklandiginda yapilacaklari anlatalim. Getir isimli metoda kullanici adindan ve sifre alanindan okuduklarimizi gönderiyoruz. Ardindan gerekli  visible ve gone islemlerini yapariz.

giris.setOnClickListener(new View.OnClickListener() {
	public void onClick(View v) {
	
	   try{ 
			  getir(Kuladi.getText().toString(),sifre.getText().toString());
					 
			  
		   } 
		   
		   finally{ 
		  }			
	
		giris.setVisibility(Button.VISIBLE);
		yeniSfr.setVisibility(Button.GONE);
 
	  }
  });

Getir isimli metod da ise aldigi kullanici adi ve sifre parametrelerini kontrol eder eger kayitli olanlar ile eslesirse LSTVWMAIN isimli java sinifini baslatir ve o sinifin isaret ettigi lstvw.xml sayfasini baslatir.

private void getir(String kulAdi, String sifre){ 
		SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    	String kayitliAd = preferences.getString("KulAd", "");
        String kayitliSifre = preferences.getString("KullSifre", ""); 
        if(kayitliAd.equals(kulAdi) && kayitliSifre.equals(sifre) ){
        	startActivity(new Intent("android.intent.action.LSTVWMAIN"));
        	 
        }
        
    }

 

Siradaki buton yeni hesap butonu. Bu ise kayit isimli metoda kullanici adini ve sifreyi gönderir.  Bunun ardindan ise gerekli visible ve gone islemleri yapilir.

yeniHsb.setOnClickListener(new View.OnClickListener() {
				public void onClick(View v) {
				
				   try{ 
	                	Kayit(Kuladi.getText().toString(),sifre.getText().toString());
	                   } 
	                   
	                   finally{ 
	                  }			
				   	Kuladi.setText("");
				   	sifre.setText("");
				   	chcBox.setVisibility(CheckBox.VISIBLE);
			    	giris.setVisibility(Button.VISIBLE);
			    	yeniHsb.setVisibility(Button.GONE);
		     
		          }
		      });

 

Kayit isimli metod da yine bazi parametreler almaktadir. Ve bu parametreleri okuyarak SharedPreferences nesnesine eklemektedir. Ve en son commit ederek kayiti ekler. Toast ile de uyari mesaji verir kayitin eklendigine dair.

private void Kayit(String kulAdi, String sifre){
		SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
	 
		SharedPreferences.Editor editor = preferences.edit();
	  
        editor.putString("KulAd", kulAdi);
             
        editor.putString("KullSifre", sifre);
        editor.commit();
        Toast.makeText(getApplicationContext(), "KAYIT EKLENDI", Toast.LENGTH_SHORT).show();

En son buton ise yeni sifre… Yani sifre degistirmek için kullandigimiz buton. Check box ile aktif ettigimizi anlatmistim. Önce SharedPreferences den kayitli olan sifreyi okur. Eger ayni ise kayit metoduna yeni sifreyi ve kullnici adini gönderir. Bu sayede sifre degistirilmis olur.

yeniSfr.setOnClickListener(new View.OnClickListener() {
	public void onClick(View v) {
		 
		   try{
				SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
				String kayitliSifre = preferences.getString("KullSifre", ""); 
			  
			   if(kayitliSifre.equals(Onckisifre.getText().toString()))
			   {
				   
				   Kayit(Kuladi.getText().toString(),sifre.getText().toString());
			   }
			   
			   else
				   Toast.makeText(getApplicationContext(), "YANLIS SIFRE", Toast.LENGTH_SHORT).show();
					  }
			   finally{ 
			  }			
		Kuladi.setText("");
		sifre.setText("");
		giris.setVisibility(Button.VISIBLE);
		yeniSfr.setVisibility(Button.GONE);
		Onckisifre.setVisibility(Button.GONE);
 
	  }
  });

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir