ආයුබෝවන් ඔයාලා හැමෝටම...
මෙහිදී මම Android Activities අතර comminication එක සිදු කරන විදිහ තේරුම් ගැනීම පහසු වන ලෙස සරල ආකාරයෙන් පැහැදිලි කරන්නම්…
Parent Activity එකෙන් වෙනත් activity එකකට data pass කිරීම ක්රම කිහිපයකටම කරන්න පුලුවන්.මෙම පාඩමේදී පහතින් දැක්වෙන සරල ක්රම 3 භාවිතෙන් Activities අතර data pass කරන විදිහ බලමු..
- Global Variables භාවිතයෙන් data pass කිරීම.
- Intent භාවිතයෙන් data pass කිරීම.
- Bundle Method මඟින් data pass කිරීම.
Global Variables භාවිතයෙන් data pass කිරීම
පහත දැක්වෙන උදාහරණයෙන් මෙය සිදු කරන්නේ කොහොමද කියලා පැහැදිලි කරන්නම්..මෙම උදාහරණයෙන් button එකක් එබූ විට first activity එකේ සිට second activity එකට message එකක් යවන විදිහ තමයි මම කියලා දෙන්නේ..
පළමුවෙන්ම android project එකක් start කරලා ඒ තුළ activity_first.xml සහ activity_second.xml නමින් layout file 2ක් හදාගන්න.
ඊළඟට අපි GlobalVariable නමින් වෙනම class එකක් හදලා ඒ තුළ global variable එකක් declare කරගන්න ඔිනි. ඒ වගේම මේ variable එක public static වෙන්න ඔිනි.මේ විදිහට variable name එකක් දීලා declare කරාම අපේ application එකේ ඕනෑම තැනක ඉහත variable එකට සෘජුවම access කිරීමේ හැකියාව තියනවා.
ඊළඟට කරන්න තියන්නේ පහතින් දැක්වෙන ආකාරයට අපි හදාගත්ත XML file දෙකේ වෙන වෙනම xml code ලියන්න.
activity_first.xml
activity_second.xml
ඒ වගේම SecondAtivity එක AndroidManifest.xml file එකට add කරන්න.(අපි අලුතින් හදන සෑම Activity එකක්ම මේ XML file එකට add කරන්න ඔිනි.)
දැන් project එක run කරලා බැලුවම පහත දැක්වෙන විදිහට message එකක් type කරලා button එක press කරාම ඊළඟ activity එක තුළින් එම message එක දිස් වන ආකාරය බලා ගන්න පුලුවන්.
Intent භාවිතයෙන් data pass කිරීම
සාමාන්යයෙන් Intents භාවිතයෙන් Activities අතර primitive data සහ Strings passing කිරීම පිළිගත් ක්රමයක් ලෙස හදුන්වන්න පුලුවන්.මෙහිදී එක් activity එකක සිට තවත් activity එකකට intent භාවිතයෙන් data send කරනවා.මේ සඳහා putExtra() method එක භාවිතා කරලා සියලුම data, Intent object එකක් තුළට add කරනවා.මෙම method එකට key එකක් සහ value එකක් තියනවා. ඒ මඟින් data pass කරන්න පුලුවන්.මෙම value එකේ type එක අපි යවන data වර්ගය අනුව int, float, long, string ආදී වෙන්න පුලුවන්.
Data යැවීම
1
2
3
|
Intent intent = new Intent(context, DestinationActivityName.class);
intent.putExtra(Key, Value);
startActivity(intent);
|
මෙහිදී මම putExtra() method එක භාවිතයෙන් එක් value එකයි යවන්නේ.මේ විදිහටම ඔයාලට පුලුවන් value කිහිපයක් එකවර යවන්නත්.
ඉහතින් declare කරලා තියන Intent object එකේ context එකෙන් First Activity එකත්, DestinationActivityName මඟින් Second Activity එකත් දක්වනවා.
ඉහතින් declare කරලා තියන Intent object එකේ context එකෙන් First Activity එකත්, DestinationActivityName මඟින් Second Activity එකත් දක්වනවා.
Data ලබා ගැනීම
- මේ සඳහා First Activity එකේ store කරලා තියන data ලබා ගැනීමට, Second Activity එක තුළ Intent එකක් නිර්මාණය කළ යුතුයි.
- අපි යවන ලද data type එක string නම් පහත දැක්වෙන ආකාරයෙන් එය ලබා ගත හැකියි.
- මෙහිදී String type එකෙන් string කියලා variable එකක් හදලා ඒ තුළට කලින් Activity එකේ putExtra() method එකට ලබාදුන් Key value එක parameter එකක් ලෙස pass කරනවා.(මීට අමතරව වෙනත් වර්ගයන් වල data ලබා ගැනීම සඳහා getIntExtra(), getFloatExtra() අාදී method භාවිතා කරනවා.)
1
2
|
Intent intent = getIntent();
String str = intent.getStringExtra(Key);
|
Data passing කරන විදිහ ගැන මම ඉහතින් කරපු උදාහරණයම මෙම ක්රමය භාවිතා කරලා කරන්න පුලුවන්.activity_first.xml සහ activity_second.xml සඳහා code ඉහත ආකාරයටම යොදාගන්න ඔයාලට පුලුවන්.
Java class දෙක සඳහා code පහළින් දැක්වෙන විදිහට type කරලා run කරාම ඔයාලට ඉහත ආකාරය වගේම data pass වෙන විදිහ බලන්න පුලුවන්..
FirstActivity.java
SecondActivity.java
Bundle Method මඟින් data pass කිරීම
Android වල අපගේ දත්ත ගබඩා කර තැබිය හැකි Bundle ලෙස හඳුන්වන class එකක් තියනවා.එහි string, chars, boolean, integer සහ වෙනත් බොහෝ data type store කරන්න පුලුවන්.
දත්ත බහාලුවක්(data container) ලෙස Intent එකක් භාවිතා කිරීම වෙනුවට, data සෘජුවම මෙම Bundle එක තුල store කර තැබිය හැක.
මෙම ක්රමය සාපේක්ෂව Intent භාවිතෙන් data passing කරන ක්රමයට සමානයි. මේ අවස්ථාවේ දී වෙන්නේ intent instance එකක් තුළ data store වෙනවා වෙනුවට Bundle එක තුළ data store වීමක්.
FirstActivity.java තුළ පහතින් දැක්වෙන ආකාරයට code එක ලියන්න.මෙහිදී Intent එකක් create කරලා, data store කිරීම සඳහා Bundle එකක් හදනවා.
ඊළඟට SecondActivity එකේ දී, පහළින් දැක්වෙන විදිහට Intent එකට call කරන්න ඔිනි.
ඒ වගේම getBundleExtra Method එක මඟින් bundle එක තුළ ඇති data ලබාගෙන එය String variable එකක් තුළ store කරගන්නවා.
දැන් කලින් ක්රම දෙකේ කරා වගේම project එක run කරලා input text එකක් දුන්නම අනිත් activity එකේ display වෙනවා ඔයාලට බලන්න පුලුවන්..
මම ඉහතින් කරලා තියනවා වගේ ඔයාලත් දිගටම මේ වගේ practice කරන්න.මම හිතනවා ඔයාලට Android වල Activities අතර data pass කරන ආකාරය දැන් තේරෙනවා කියලා.අලුත් post එකකින් හමුවන තෙක් සුබ දවසක් ඔයාලට..