android l02 - activities and adapters
TRANSCRIPT
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