Android Activity’den Activity’e Değişken Transferi
Android’de, bir activity’den diğerine veri aktarmak için çeşitli yöntemler mevcuttur. Bu yöntemler arasında, Intent nesneleri, Bundle nesneleri, SharedPreferences ve Serializable nesneler yer almaktadır.
Intent Nesneleri
Intent nesneleri, bir activity’den diğerine veri aktarmak için en yaygın olarak kullanılan yöntemdir. Bir Intent nesnesi, aktarılacak verileri ve hedef activity’nin adını içerir. Veriler, Intent nesnesinin putExtra() metodu kullanılarak eklenir. Hedef activity’nin adı ise, Intent nesnesinin setClass() metodu kullanılarak belirlenir.
Örneğin, MainActivity adlı bir activity’den SecondActivity adlı bir activity’ye veri aktarmak için aşağıdaki kod kullanılabilir:
java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("name", "John Doe");
intent.putExtra("age", 30);
startActivity(intent);
SecondActivity adlı activity’de, MainActivity’den aktarılan veriler aşağıdaki kod kullanılarak alınabilir:
java
Intent intent = getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 0);
Bundle Nesneleri
Bundle nesneleri, Intent nesnelerine benzer şekilde, bir activity’den diğerine veri aktarmak için kullanılır. Ancak, Bundle nesneleri daha karmaşık verileri aktarmak için kullanılabilir. Örneğin, bir Bundle nesnesi, bir dizi, bir liste veya bir harita gibi verileri içerebilir.
Bir Bundle nesnesi, Intent nesnesinin putExtra() metodu kullanılarak eklenir. Hedef activity’de, Bundle nesnesi, Intent nesnesinin getExtras() metodu kullanılarak alınabilir.
Örneğin, MainActivity adlı bir activity’den SecondActivity adlı bir activity’ye bir dizi aktarmak için aşağıdaki kod kullanılabilir:
java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putStringArray("names", new String[] {"John Doe", "Jane Doe", "Peter Smith"});
intent.putExtras(bundle);
startActivity(intent);
SecondActivity adlı activity’de, MainActivity’den aktarılan dizi aşağıdaki kod kullanılarak alınabilir:
java
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String[] names = bundle.getStringArray("names");
SharedPreferences
SharedPreferences, bir activity’den diğerine veri aktarmak için kullanılabilecek bir başka yöntemdir. SharedPreferences, cihazda kalıcı olarak saklanan bir veri deposudur. Bu nedenle, SharedPreferences kullanılarak aktarılan veriler, cihaz yeniden başlatılsa bile kaybolmaz.
SharedPreferences nesnesi, getSharedPreferences() metodu kullanılarak oluşturulur. Veriler, SharedPreferences nesnesinin putString(), putInt(), putBoolean() gibi metotları kullanılarak eklenir. Veriler, SharedPreferences nesnesinin getString(), getInt(), getBoolean() gibi metotları kullanılarak alınır.
Örneğin, MainActivity adlı bir activity’den SecondActivity adlı bir activity’ye bir dize aktarmak için aşağıdaki kod kullanılabilir:
java
SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name", "John Doe");
editor.commit();
SecondActivity adlı activity’de, MainActivity’den aktarılan dize aşağıdaki kod kullanılarak alınabilir:
java
SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);
String name = sharedPreferences.getString("name", "");
Serializable Nesneler
Serializable nesneler, bir activity’den diğerine aktarmak için kullanılabilecek bir başka yöntemdir. Serializable nesneler, Java’nın Serializable arayüzünü uygulayan nesnelerdir. Bu nesneler, bir byte dizisine dönüştürülebilir ve daha sonra bu byte dizisinden geri oluşturulabilir.
Bir Serializable nesnesi, Intent nesnesinin putExtra() metodu kullanılarak eklenir. Hedef activity’de, Serializable nesnesi, Intent nesnesinin getSerializableExtra() metodu kullanılarak alınabilir.
Örneğin, MainActivity adlı bir activity’den SecondActivity adlı bir activity’ye bir Person nesnesi aktarmak için aşağıdaki kod kullanılabilir:
java
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Person person = new Person("John Doe", 30);
intent.putExtra("person", person);
startActivity(intent);
SecondActivity adlı activity’de, MainActivity’den aktarılan Person nesnesi aşağıdaki kod kullanılarak alınabilir:
java
Intent intent = getIntent();
Person person = (Person) intent.getSerializableExtra("person");
Faydalı Siteler ve Dosyalar
- Android Developers: Passing Data Between Activities
- Android Tutorial: Passing Data Between Activities
- Passing Data Between Activities in Android
- Android: Passing Data Between Activities Using Intent
- Passing Data Between Activities in Android Using Serializable