04 activities - Android

26
Activities Workshop India

description

This ppt explains how

Transcript of 04 activities - Android

Page 1: 04   activities - Android

Activities

Workshop India

Page 2: 04   activities - Android

What is Activity?» An activity is the equivalent of a Frame/Window in

GUI toolkits. It takes up the entire drawable area of the screen (minus the status and title bars on top).

» Activities are meant to display the UI and get input from the user.

» Activities can be frozen when the focus is switched away from them (eg: incoming phone call).

» Services on the other hand keep running for the duration of the user’s ‘session’ on the device.

Page 3: 04   activities - Android

Activity History» Any screen state is called an activity.

» An Application always starts with a main activity

» An application can have multiple activities that the user moves in and out of.

» A stack of activities is maintained by the android system to handle back presses and returns.

Page 4: 04   activities - Android

2 Activity Application» In res/layout we’ll need to make 2 xml files each

defining the layout for the individual activity.˃ main.xml˃ second.xml

» Each activity needs an activity class associated with it, these are present in the /src folder˃ mainActivity.java -> main.xml˃ secondActivity.java -> second.xml

Page 5: 04   activities - Android

res/layout/main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I&apos;m screen 1 (main.xml)" android:textAppearance="?android:attr/textAppearanceLarge" /> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Click me to another screen" /> </LinearLayout>

Button that we’ll use to move to the next activity

Page 6: 04   activities - Android

res/layout/second.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="I&apos;m screen 2 (second.xml)" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>

Page 7: 04   activities - Android

src/mainactivity.javapackage com.wingie;

import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;

public class mainactivity extends Activity { Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

Page 8: 04   activities - Android

src/mainactivity.java setContentView(R.layout.main); addListenerOnButton(); } public void addListenerOnButton() { final Context context = this; button = (Button) findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(context, second.class); startActivity(intent); } }); }}

Then we create an intent to move to the next activity, (Second.java)

Page 9: 04   activities - Android

src/secondactivity.java

Page 10: 04   activities - Android

open androidmanifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wingie" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="13"/> <application android:label="@string/app_name"> <activity android:name=".main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:label="@string/app_name" android:name=".second" > </activity> </application></manifest>

This describes the second activity in the application

Page 11: 04   activities - Android

Activity LifeCyclepublic class ExampleActivity extends Activity {@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);} @Override protected void onStart() { super.onStart();} @Override protected void onResume() { super.onResume();}

The activity is being created.

The activity is about to become visible.

The activity has become visible (it is now "resumed").

The super.fn() makes sure that the overridden method is also called before any of our code runs..

Page 12: 04   activities - Android

Activity LifeCycle @Override protected void onPause() { super.onPause();} @Override protected void onStop() { super.onStop();} @Override protected void onDestroy() { super.onDestroy(); }}

Another activity is taking focus (this activity is about to be "paused").

The activity is no longer visible (it is now "stopped")

The activity is about to be destroyed.

Page 13: 04   activities - Android
Page 14: 04   activities - Android

Fragments» A Fragment represents a behavior or a portion of

user interface in an Activity.

» A fragment must always be embedded in an activity ˃ fragment's lifecycle is directly affected by the host activity's lifecycle.

» You can insert a fragment into your activity layout ˃ by declaring the fragment in the activity's layout file, as

a <fragment> element˃ or from your application code by adding it to an existing ViewGroup

container.

Page 15: 04   activities - Android

First Add the new classes in /src» MainActivity.java

˃ Main Activity that will host the 2 fragments˃ Layout : res/layout/Activity_main.xml

» Frag1.java˃ Fragment 1 class ˃ Layout : res/layout/Frag1.xml

» Frag2.java˃ Fragment 2 class.˃ Layout: res/layout/frag2.xml

Page 16: 04   activities - Android
Page 17: 04   activities - Android
Page 18: 04   activities - Android
Page 19: 04   activities - Android

Activity_main.xml - 1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:name="com.example.fragtest.Frag1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="45" android:id="@+id/frag1"></fragment>

Page 20: 04   activities - Android

Activity_main.xml - 2<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:name="com.example.fragtest.Frag2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="55" android:id="@+id/frag2"></fragment>

</LinearLayout>

Page 21: 04   activities - Android

Frag1.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" >

<TextView android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Frag ONE" tools:context=".MainActivity" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textview01" android:text="ClickHere" tools:context=".MainActivity" />

</RelativeLayout>

Page 22: 04   activities - Android

Frag2.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" >

<TextView android:id="@+id/textview02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Frag TWO" tools:context=".MainActivity" />

<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textview02" android:text="Click---Here" tools:context=".MainActivity" /></RelativeLayout>

Page 23: 04   activities - Android

MainActivity.javapackage com.example.fragtest;

import android.os.Bundle;import android.app.Activity;import android.view.Menu;

public class MainActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}

Page 24: 04   activities - Android

Frag1.javapackage com.example.fragtest;

import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;

public class Frag1 extends Fragment {

public Frag1() {// TODO Auto-generated constructor stub}

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag1, container, false);return view;}

}

Page 25: 04   activities - Android

Frag2.javapackage com.example.fragtest;

import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;

public class Frag1 extends Fragment {

public Frag1() {// TODO Auto-generated constructor stub}

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag1, container, false);return view;}

}

Page 26: 04   activities - Android

HomeWork - 10 pages» What are Fragments?

» What are Fragment Transactions?

» Message passing between two fragments.˃ With example source code.