"Enter"a basıp içeriğe geçin

Kalıcı Değişkenler (Persistent) Kullanımı

Ekranın yan dönmesi gibi durumlarda uygulama baştan başlatılıyor. Bu yüzden de tanımlanan değişkenleri saklamak gerekiyor. Bunun için Persistent ve Parcelable olarak iki yöntem var. Bu yazıda persistent kullanımını göstereceğim. Fakat şunuda söylemeliyim bu yöntem diğer yönteme göre daha yavaş. Diğer yöntemle birde nesneleride saklayabiliyorsunuz.

Bu uygulamada ekrana bir tane textview bir tanede button koyuyoruz.

MainActivity.java

package com.osmananilozcan.kalicidegiskenler;

import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    int sayac = 0;
    Button btnSayac;
    TextView tvSayac;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvSayac = findViewById(R.id.tvSayac);

        // Bir değişiklik olduysa burası çalışacak.
        if (savedInstanceState != null) {
            sayac = savedInstanceState.getInt("sayac");
            tvSayac.setText("Sayaç: " + sayac);
        } else { // Bir değişiklik olmadıysa yani uygulama ilk kez açıldığında çalışacak yer.
            sayac = 0;
        }

        btnSayac = findViewById(R.id.btnSayac);
        btnSayac.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sayac++;
                tvSayac.setText("Sayaç: " + sayac);
            }
        });
    }

    // protected olmasına dikkat edin.
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        // Değişen değeri buradan alıyor. If içerisinde burada verilen etiket ile çağırılıyor.
        outState.putInt("sayac", sayac);
    }
}

activity_main.xml

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

    <TextView
        android:id="@+id/tvSayac"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sayaç: 0"/>

    <Button
        android:id="@+id/btnSayac"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sayacı Arttır" />

</LinearLayout>

Test etmek için uygulamayı açınca sayacı arttırın ve ekranı yan çevirin. Sayacın aynı olduğunu göreceksiniz.

Github:

https://github.com/Osmananilozcan/KaliciDegiskenler

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.