activities, fragments, and...
Post on 28-Dec-2019
4 Views
Preview:
TRANSCRIPT
Activities, Fragments, and IntentsLigjërata e tretë
Ligjerues Burim Avdiu
UPZ -Universiteti i Prizrenit
Agjenda
• Cikli i jetës së një aktiviteti
• Përdorimi i fragmenteve për rregullimin e UI
• Aplikimi i stileve the themave në aktivitete
• Si të paraqesim aktivitetet si dialog dritare?
• Kuptimi i konceptit për synimeve(inintents)
• Përdorimi i Intent objekteve për lidhje me aktivitete
• Si Intent filtrat ndihmojn në që lidheni me aktivitete të tjera
• Paraqitja e alertave për përdoruesin duke përdorur njoftimet
Cikli i jetës së një aktiviteti• Aktiviteti është një dritare që përmban UI në një aplikacion.
• Një aplikacion mund të ketë një ose më shumë aktivitete.
• Nga momenti i paraqitjes së aktiviteti deri në mbyllje mund të ketë disa faza, që njohen si cikli i jetës së aktivitetit.
• Për krijimin e aktiviteti ju krijoni një Java klasë që zgjeron Activity klasën bazë
package net.learn2develop.Activity101;import android.app.Activity; import android.os.Bundle;
public class Activity101Activity extends Activity {
/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.main);//paraqet një XML dok për UI
}}
Cikli i jetës së një aktiviteti• Secili aktivitet ka në app deklarohet në AndroidManifest.xml si:
<activity
android:label=”@string/app_name”
android:name=”.Activity101Activity” >
<intent-filter >
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
Aktiviteti bazë definon disa eventa që mundësojn jetën e aktiviteti si:
➤ onCreate() — Thirret kur aktivietet krijohet për së pari
➤ onStart() — Thirret kur aktiviteti fillon të shfaqet në ekran
➤ onResume() — Thirret kur aktiviteti fillon iteraksionin
➤ onPause() — Thirret kur aktiviteti i tanishëm duhet të pauzohet dhe aktiviteti i
më parshëm duhet të rifilloj
➤ onStop() — Thirret kur aktiviteti nuk është paraqitur gjatë
➤ onDestroy() — Thirret për të shkatruar një aktivitet
➤ onRestart() — Thirret kur aktiviteti është ndalur dhe rifillon fillimi përsëri
Cikli i jetës së një aktiviteti
Shmbulli i aktiviteteteve
• Aktivitetet janë të paraqitura në klasë në projektin e Aktiviteteve
Pasi kemi shkruar programin ta testojmë:
1. Për ta ekzekutuar përdor F11
11-16 06:25:59.396: D/Lifecycle(559): In the onCreate() event
11-16 06:25:59.396: D/Lifecycle(559): In the onStart() event
11-16 06:25:59.396: D/Lifecycle(559): In the onResume() event
2. Zgjidhni Back butonin
11-16 06:29:26.665: D/Lifecycle(559): In the onPause() event
11-16 06:29:28.465: D/Lifecycle(559): In the onStop() event
11-16 06:29:28.465: D/Lifecycle(559): In the onDestroy() event
3. Mbani të shtypur butonin Home pastaj zgjidhni Aplikacionin
11-16 06:31:08.905: D/Lifecycle(559): In the onCreate() event
11-16 06:31:08.905: D/Lifecycle(559): In the onStart() event
11-16 06:31:08.925: D/Lifecycle(559): In the onResume() event
Shmbulli i aktiviteteteve
4. Zgjidhni butonin Phone
11-16 06:32:00.585: D/Lifecycle(559): In the onPause() event
11-16 06:32:05.015: D/Lifecycle(559): In the onStop() event
5. Zgjidhni butonin Back
11-16 06:32:50.515: D/Lifecycle(559): In the onRestart() event
11-16 06:32:50.515: D/Lifecycle(559): In the onStart() event
11-16 06:32:50.515: D/Lifecycle(559): In the onResume() event
Aplikimi i stileve the themave në aktivitete
• Në fillim aktiviteti paraqitet në krejt ekranin, ai mund të paraqitet në
mënyra të ndryshme duke përdorur thema dhe stile të ndryshme, ne
po e paraqesim si dialog nëse aplikojmë themën e dialog.
Thema shtohet në fajlin AndroidManifest.xml
<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@android:style/Theme.Dialog”>
Aplikimi i stileve the themave në aktivitete
• Në fillim aktiviteti paraqitet në krejt ekranin, ai mund të paraqitet në
mënyra të ndryshme duke përdorur thema dhe stile të ndryshme, ne
po e paraqesim si dialog nëse aplikojmë themën e dialog.
Thema shtohet në fajlin AndroidManifest.xml
<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@android:style/Theme.Dialog”>
Paraqitje e dritares Dialog
E dim se shpesh na duhet të paraqesim dritaren dialog për nevoja të ndryshme.
Në vijim po krijojmë aplikacionin Dialog
public void onClick(View v)
{
showDialog(0);
}
return new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("Ky është një dialog ...")
.setPositiveButton("OK", new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton)
{
Toast.makeText(getBaseContext(),
"OK clicked!", Toast.LENGTH_SHORT).show();
}
})
Paraqitje e dritares Dialog
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,
int whichButton) {Toast.makeText(getBaseContext(),
"Cancel clicked!", Toast.LENGTH_SHORT).show();}
}) .setMultiChoiceItems(items, itemsChecked, new
DialogInterface.OnMultiChoiceClickListener() {public void onClick(DialogInterface dialog, int which, boolean isChecked) {Toast.makeText(getBaseContext(),
items[which] + (isChecked ? " checked!": " unchecked!"), Toast.LENGTH_SHORT).show();
}}
).create();
Paraqitje e dritares Progres Dialog
Shpesh shohim se gjatë paraqitjes së një aplikacioni na hapet një dritare e përkohshme deri sa të ekzekutohet prog, kjo dritare njihet si progres dialog, në vijim po modifikojmë aplikacionin Dialog për të shfaqur Progress Dialog.
Krijohet instanca e klasës ProgressDialog tani thirret metoda show:
• final ProgressDialog dialog = ProgressDialog.show(
• this, "Duke u hapur", "Ju lutëm pritni...", true);
new Thread(new Runnable() {
public void run() {
try {Thread.sleep(5000);dialog.dismiss();}
catch (InterruptedException e) {
e.printStackTrace();}
}}).start();
Paraqitje e dritares Progres Dialog e detajuar
showDialog(1);
progressDialog.setProgress(0);
new Thread(new Runnable() {
public void run()
{for (int i = 0; i < 15; i++) {
try {
Thread.sleep(1000);
progressDialog.incrementProgressBy((int)(100/15));}
catch (InterruptedException e) {e.printStackTrace();}
}
progressDialog.dismiss();
}
}).start();
Paraqitje e dritares Progres Dialog e detajuar
progressDialog = new ProgressDialog(this);
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setTitle("Downloading files...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
Toast.makeText(getBaseContext(),
"OK clicked!", Toast.LENGTH_SHORT).show();
}});
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton)
{
Toast.makeText(getBaseContext(),
"Cancel clicked!", Toast.LENGTH_SHORT).show();
}
});
return progressDialog;
}
Lidhja e aktiviteteve duke përdorur Intens
Një aplikacion në Android ka një ose më shumë aktivitete, për kalimin nga një
aktivitet në tjetrin përdorim intents.
Shembull me Aktivitet - Krijo projektin për android si të tjerët shto në Manifest
shënimet
<activity
android:label=” Second Activity”
android:name=”.SecondActivity” >
<intent-filter >
<action android:name=”edu.uni.SecondActivity” />
<category android:name=”android.intent.category.DEFAULT” />
</intent-filter>
</activity>
- Shto butonin në klasën e parë
- Shto klasën SecondActivity
public void onClick(View view) {
startActivity(new Intent(“edu.uni.SecondActivity”));
}
Kthimi i reyultatit nga një Intent
Shpesh na duhet që pasi të kemi thirru nja aktivitet dhe jemi kthyer të aktiviteti të
kemi shënime që u plotësuan në aktivitetin që e kaluam.
Për këtë përdorimi startActivityForResult() si
startActivityForResult(new Intent(“edu.uni.SecondActivity”),request_Code);
request code – është një vlerë int që identifikon aktivitetin që thirr, në rastin kur ai
kthen vlerë.
Në mënyrë që një aktivitet me kthy vlerë një vlerë kur ai thirret na duhet me Intent
objekt për me kthy shënime pastaj setData() metodën:
setResult() – merr rezult kodin dhe shënimet
Fragmentet
Aktivitetet përmbajnë shumë pjesë dhe ato dëshirojmë që kur paraqiten të jenë
të përshtatshme si në smartphon, tableta (hapësira, paraqitja e elementeve që
përdorën të jetë më e përdorshme) na duhet të e ndajm aktivitetin në mini-
aktivitete që ndryshe njihen si Fragmente.
Fragmentet
Për të krijuar klasë për fragmente na duhet të zgjerojmë klasën bazë të
fragmenteve.
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
//---Inflate the layout for this fragment---
return inflater.inflate(
R.layout.fragment1, container, false);
}
}
-Dy fajlla xml për paraqitjen e fragmentev
Dhe fajlli kryesor
Fragmentet
Dhe fajlli kryesor
<fragment
android:name="edu.uni.fragments.Fragment1"
android:id="@+id/fragment1"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
<fragment
android:name="edu.uni.fragments.Fragment2"
android:id="@+id/fragment2"
android:layout_weight="1"
android:layout_width="0px"
android:layout_height="match_parent" />
Shtimi i fragmenteve në mënyrë automatike
Shtimi i fragmenteve në mënyrë dinamike e bën akoma më të fuqishëm
përdorimin e tyre.
Shembulli në vijim tregon përdorimin e fragmenteve në mënyrë automatike.
FragmentManager fragmentManager = getFragmentManager(); - krijimi i
instancës për klasën FragmentManager .
FragmentTransaction fragmentTransaction = fragmentManager.
beginTransaction(); - thirr transaksiont e fragmentit në aktivitet.
WindowManager wm = getWindowManager();
Display d = wm.getDefaultDisplay();
if (d.getWidth() > d.getHeight())
Kontreollimin e pajisjes dhe thirrjen e fragmenteve adekuate.
Cikli i jetës së fragmenteve
Si aktivitetet edhe fragmentet e kanë jetën e tyre. Kuptimi i drejt i jetës së
fragmenteve bënë përdorimin e tyre.
Detyrë në shpi – shikimi i fazave të fragmenteve.
➤ onAttached() — Thirret kur fragmenti ka qenë lidhur me aktivitetin
➤ onCreateView() — Thirret kur krijohet pamje për fragment
➤ onActivityCreated() — Thirret kur kthehet medoda e onCreate() aktivitetit.
➤ onDestroyView() — Thirret kur pamja e aktiviteteve fillon të largohet
➤ onDetach() — Thirret kur fragmenti është shkëputur nga aktiviteti
Interaksionet mes fragmenteve
Shpesh na ndodh që një aktivitet të ketë një apo më shumë fragmente që
punojnë së bashku për të krijuar UI më të mirë.
Në këtë rast është shumë me rëndësi që fragmentet të komunikojnë mes vetë
dhe të shkëmbejnë informata.
Detyrë në shpi – shikimi i fazave të fragmenteve.
public void onStart() {
super.onStart();
//---Button view---
Button btnGetText = (Button) getActivity().findViewById(R.id.btnGetText);
btnGetText.setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
TextView lbl = (TextView)getActivity().findViewById(R.id.lblFragment1);
Toast.makeText(getActivity(), lbl.getText(),
Toast.LENGTH_SHORT).show();
}
});
}
Thirrja e aplikacioneve të jashtme përmes Intents
Shpesh na duhet që nga aplikacioni i ynë të thirr pjesë të aplikacioneve të tjera,
për këtë në Android përdorim Intets. P.sh kur na duhet të përdorim ueb faqes
përdorim intent objektin për hapjen e web browserit për paraqitjen e faqes tonë.
Ushtrimi krijimi i aplikacionit që thirr app të jashtëm
Intents zakonisht kanë dy pjesë : action and data. Action përshkruan çka duhet
ekzekutohet si modifikimi i item-it, paraqitje e pamjes për item ,etj. Data tregon
çka është afektuar, p.sh personi në listen e kontakteve.
Disa shembuj të aksioneve :
➤ ACTION_VIEW - ACTION_VIEW/content://contacts
➤ ACTION_DIAL - ACTION_DIAL/tel:+651234567
➤ ACTION_PICK - ACTION_PICK/content://contacts
Intent i = new
Intent(android.content.Intent.ACTION_VIEW,
Uri.parse(“http://www.amazon.com”));
startActivity(i);
Intent Object
Çka është objekti në programim?
Intent Objekt – përdorët të thirrur aktivitet të tjera! – si u tregu në sllajdet e kaluara,
aktivitet .
startActivity(new Intent(this, SecondActivity.class));
Gjithashtu përdorëm për thirrjen e aplikacioneve jashtë app tonë.
Intent i = new
Intent(android.content.Intent.ACTION_VIEW,
Uri.parse(“http://www.amazon.com”));
startActivity(i);
Mund të ketë i.setType(ContactsContract.Contacts.CONTENT_TYPE);
Intent object mund të ketë informata si :
➤ Action
➤ Data
➤ Type
➤ Category
top related