activities, fragments, and...

24
Activities, Fragments, and Intents Ligjërata e tretë Ligjerues Burim Avdiu UPZ -Universiteti i Prizrenit

Upload: others

Post on 28-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

Activities, Fragments, and IntentsLigjërata e tretë

Ligjerues Burim Avdiu

UPZ -Universiteti i Prizrenit

Page 2: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 3: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

}}

Page 4: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 5: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

Cikli i jetës së një aktiviteti

Page 6: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 7: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 8: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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”>

Page 9: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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”>

Page 10: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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();

}

})

Page 11: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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();

Page 12: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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();

Page 13: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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();

Page 14: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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;

}

Page 15: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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”));

}

Page 16: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 17: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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.

Page 18: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 19: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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" />

Page 20: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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.

Page 21: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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

Page 22: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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();

}

});

}

Page 23: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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);

Page 24: Activities, Fragments, and Intentsnaserkastrati.weebly.com/uploads/3/8/8/3/38831473/l4-mb-aktivitetet-fragmentet-synimet.pdfThirrja e aplikacioneve të jashtme përmes Intents Shpesh

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