Android L02 - Activities and Adapters

Preview:

Citation preview

CloudInteraction Design

Android

ListAdapter / StringAdapter

ListAdapter / StringAdapterMapping Model to UI (MVVM-like-ish)

Custom Lists

Custom Lists

Custom Lists

Custom Lists

ActivitiesStarting Another Activity

Intentan object that provides runtime binding between

separate components (such as two activities)

Intentcarry a collection of various data types as

key-value pairs called extras through putExtra()

It’s a good practice..to define keys for intent extras using your app's package

name as a prefix. This ensures they are unique, in case your app interacts with other apps.

AndroidManifest.xml<application

android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"  ><activity

android:name=".MainActivity"android:label="@string/title_activity_main"  ><intent-­‐filter>

<action  android:name="android.intent.action.MAIN"  />

<category  android:name="android.intent.category.LAUNCHER"  /></intent-­‐filter>

</activity><activity

android:name=".DisplayMessageActivity"android:label="@string/title_activity_display_message"  ><meta-­‐data

android:name="android.support.PARENT_ACTIVITY"android:value="com.example.intetsample.MainActivity"  />

</activity></application>

Starting Another Activity

• In the first activity:public void onClickLaunchSecondActivity(View view) {

Intent intent = new Intent(this, SecondActivity.class);EditText editText = (EditText) findViewById(R.id.editTxtMsg);String message = editText.getText().toString();intent.putExtra("MainActivityMsg", message);startActivity(intent);

}

• In the second activity:@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.second_activity);

((TextView)findViewById(R.id.txtviewMsgList)).setText(this.getIntent().getExtras().getString("MainActivityMsg"));

}

Starting Another Activity

• In the first activity:public void onClickLaunchSecondActivity(View view) {

Intent intent = new Intent(this, SecondActivity.class);EditText editText = (EditText) findViewById(R.id.editTxtMsg);String message = editText.getText().toString();intent.putExtra("MainActivityMsg", message);startActivity(intent);

}

• In the second activity:@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.second_activity);

((TextView)findViewById(R.id.txtviewMsgList)).setText(this.getIntent().getExtras().getString("MainActivityMsg"));

}

What we did is callingExplicit Intents

Intent(this, SecondActivity.class)

So what isImplicit Intents?

Implicit Intents

public class ImplicitIntentActivity extends ActionBarActivity {

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_implicit_intent);

final ImageView image = (ImageView)findViewById(R.id.imageView);image.setImageURI((Uri)getIntent().getExtras().get(Intent.EXTRA_STREAM));

}}

Activity

Life Cycle

Activity Life Cyclehttp://developer.android.com/reference/android/app/Activity.html

onPasue()

@Overridepublic  void  onPause()  {

//  Always  call  the  superclass  method  firstsuper.onPause();    

//  Release  the  Camera  because  //  we  don't  need  it  when  paused//  and  other  activities  might  need  to  use  it.if  (mCamera !=  null)  {

mCamera.release()mCamera =  null;

}}

onResume()

@Overridepublic  void  onResume()  {

//  Always  call  the  superclass  method  firstsuper.onResume();    

//  Get  the  Camera  instance  as  the  activity//  achieves  full  user  focusif  (mCamera ==  null)  {

//  Local  method  to  handle  camera  initinitializeCamera();  

}}

Recreating activityonSaveInstanceState

Permissions

Permissions

Permissions

Permissions