Андроид стартиране на Activity

Обикновенно създаваните от Вас приложения ще съдържат няколко Activity, които ще имат нужда от предаване на данни по между си с цел визуализиране на някакви резултати.

Следващите редове код показват как става това.
Нека имаме два класа, които наследяват класа Activity – Activity1 и Activity2 т.е. имаме две отделни Activity. Всяко от тях има свой собствен layout (изглед) създаден в .xml файл. Чрез натискането на бутон намиращ се в класа Activity1 искаме да повикаме класа Activity2.
За да направим това, в метода onCreate() на Activity1 трябва да създадем listener, който да следи за onClick() събитието на нашия бутон (next).

next.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent myIntent = new Intent(Activity1.this, Activity2.class);

Activity1.this.startActivity(myIntent);

}

});

Необходимо е да се съдаде нов обект Intent с два параметъра, който да се подаде като параметър на метода startActivity(). Ако искате да знаете кога Activity2 е затворено (унищожено) вместо startActivity() може да използвате startActivityForResult(), който метод обаче изисква и втори параметър – очаквания върнат резултат като int число (може да зададете 0).

Този код ще бъде достатъчен да извика Activity2 и то ще бъде поставено най-отгоре в стека с всички Activity-та на Android операционната система. Ако не Ви е ясно какво точно представлява този Activity стек може да прочетета тази документация.

Андроид предоставя възможност да се подават някакви необходими данни (променливи от прост тип  или обекти) между отделните Activity. Това нещо става като на създадения Intent обект се използва методa putExtra().

String value = "My Name";
myIntent.putExtra("key", value);

В кода на класа Activity2 и по-специално в метода onCreate()  за да използваме подаваните данни ние трябва да напишем:

@Override protected void onCreate(Bundle savedInstanceState) { 
Intent intent = getIntent();
String v = intent.getStringExtra("key");
Log.v("tag","value = "+v);
}
Последната стъпка е да се добави Activity2 в файла AndroidManifest.xml
<activity 
android:label="@string/app_name" 
android:name="Activity2"/>
След като напреднете в правенето на Андроид приложения може би ще Ви се
наложи да разменяте Ваши собствени обкети между отделните Activity.
Към момента демонстрирах как се подава обикновен String обект.
Ако искате да подадете, от едно Activity на друго, Ваш обект е необходимо
Вашият обект да имплементира интерфайса Serializable.
Ето как може да изглежда началото на Вашия клас описващ Вашия обект (MyObject).
@SuppressWarnings("serial")
//Това е анотация казваща да не се покава грешка при имплементирането 
//Serializable
class Deneme implements Serializable {
........
........
}
Подаването на Вашия обект в метода putExtra("key",myVariableForMyObject) остава
 същото както беше и за String-а.
Разликата тук обаче идва при опита да се вземе стойността на Вашия обект
в Activity2. За да получите стойността трябва да използвате
следния код:
MyObject obj = (MyObject) intent.
getSerializableExtra("key");
Реално трябва да се направи кастване до Вашия клас на обекта върнат
 от метода getSerializable().
Дано да съм бил полезен и коректен в обяснението. Моля коментирайте!!!

One thought on “Андроид стартиране на Activity

Leave a Reply

Your email address will not be published. Required fields are marked *