Slide 1

Slide 1 text

Android Intents with Dart & Henson Diego Velasquez Android Developer Belatrix SF @diegoveloper

Slide 2

Slide 2 text

Intents An intent is an abstract description of an operation to be performed. Activity Broadcast Receiver Service Intent

Slide 3

Slide 3 text

Have not specified a component; instead declare a general action to perform, which allows a component from another app to handle it Intent types Have specified a component which provides the exact class to be run. Implicit Explicit

Slide 4

Slide 4 text

Intent intent = new Intent( this, DetailActivity.class); startActivity(intent); Explicit Intent MainActivity.class DetailActivity.class

Slide 5

Slide 5 text

Creating & Consuming Intents public static final String INTENT_PARAM = "param_name"; ... Intent intent = new Intent( this, DetailActivity.class); intent.putExtra(INTENT_PARAM, "Android"); startActivity(intent); public static final String INTENT_PARAM = "param_name"; ... Intent intent = getIntent(); if (intent != null && intent.hasExtra(INTENT_PARAM)){ String name = getIntent().getStringExtra(INTENT_PARAM); }

Slide 6

Slide 6 text

What do we do? public static void startDetailActivity(Context context, String param1, String param2){ Intent intent = new Intent(context, DetailActivity.class); intent.putExtra("PARAM_1", param1); intent.putExtra("PARAM_2",param2); context.startActivity(intent); } public static void startDetailActivity(Context context, String param1){ Intent intent = new Intent(context, DetailActivity.class); intent.putExtra("PARAM_1", param1); context.startActivity(intent); } public static void startDetailActivity(Context context, String param1, String param2){ Intent intent = new Intent(context, DetailActivity.class); if (param1 != null) intent.putExtra("PARAM_1", param1); if (param2 != null) intent.putExtra("PARAM_2",param2); context.startActivity(intent); } public static void startDetailActivity(Context context, String param1){ startDetailActivity(context, param1,null); } Refactoring

Slide 7

Slide 7 text

Dart & Henson Android dependency Injection library to deal with Intent data passing

Slide 8

Slide 8 text

Dart: Consuming Intents DetailActivity.java @InjectExtra String paramName; … @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); Dart.inject(this); }

Slide 9

Slide 9 text

Dart: Features @InjectExtra String paramName; @InjectExtra User user; @InjectExtra("quantity") int quantityValue; @InjectExtra boolean isSuccess = false; @Nullable @InjectExtra String anotherValue; public class DetailModel { @InjectExtra String valueModel; public String getValueModel() { return valueModel; } } DetailActivity.java DetailModel model = new DetailModel(); …. @Override protected void onCreate(Bundle savedInstanceState) { …. Dart.inject(model,this); String ourValue = model.getValueModel(); }

Slide 10

Slide 10 text

Dart: Set Up build.gradle compile 'com.f2prateek.dart:dart:2.0.2' provided 'com.f2prateek.dart:dart-processor:2.0.2'

Slide 11

Slide 11 text

Henson: Creating Intents @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = Henson.with(this).gotoDetailActivity().paramName("Test value").build(); startActivity(intent); }

Slide 12

Slide 12 text

Henson: Features Intent intent = Henson.with(this).gotoDetailActivity() .isSuccess(true) .paramName("Test") .quantity(5) .user(new User()) .build(); startActivity(intent); @HensonNavigable(model = DetailModel.class) public class DetailActivity extends AppCompatActivity { DetailModel model = new DetailModel(); …. @Override protected void onCreate(Bundle savedInstanceState) { …. Dart.inject(model,this); } Intent intent = Henson.with(this).goToDetailActivity().valueModel("testing").build(); startActivity(intent);

Slide 13

Slide 13 text

Henson: Set Up build.gradle compile 'com.f2prateek.dart:henson:2.0.2' provided 'com.f2prateek.dart:henson-processor:2.0.2'

Slide 14

Slide 14 text

Place your screenshot here Let’s code

Slide 15

Slide 15 text

References ▪ Intents: https://developer.android.com/guide/components/intents-filters.html ▪ Dart & Henson: https://github.com/f2prateek/dart

Slide 16

Slide 16 text

Thanks! Any questions? You can find me at ▪ https://github.com/diegoveloper ▪ [email protected]