Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Grenade - Type safe intent buidler
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Keisuke Kobayashi
October 26, 2016
Programming
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Grenade - Type safe intent buidler
potatotips 34
Keisuke Kobayashi
October 26, 2016
More Decks by Keisuke Kobayashi
See All by Keisuke Kobayashi
AI 1st でエンタープライズ SaaS を立ち上げる / AI 1st Enterprise SaaS
kobakei
1
290
プロダクト開発をAI 1stに変革する〜SaaS is dead時代で生き残るために〜 / AI 1st Product Development
kobakei
0
3k
今日から始める依存性の注入 / First Time Dependency Injection
kobakei
26
7.8k
iOSアプリの技術的負債をどう返済したか / How to repay the technical debt of iOS app
kobakei
2
1k
iOSアプリ内で不正なSSL証明書を検知する / SSL Pinning for iOS apps
kobakei
34
12k
Kyashアプリ開発の現場
kobakei
4
3k
Review of Google I/O 2017 & Prepare for Google I/O 2018
kobakei
0
350
APIクライアントをCodableで置き換えた話
kobakei
0
1.7k
開発者が知っておきたい通知の歴史
kobakei
9
7.9k
Other Decks in Programming
See All in Programming
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
250
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
160
Oxlintはいいぞ(続)
yug1224
1
270
不幸な GC
chencmd
0
290
What's New in Android 2026
veronikapj
0
270
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
320
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
240
バグを直したら useEffect が消えた
colorful12
3
660
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
820
テーブルをDELETEした
yuzneri
0
150
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
140
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
220
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.5k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
How STYLIGHT went responsive
nonsquared
100
6.2k
Evolving SEO for Evolving Search Engines
ryanjones
0
260
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
790
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
490
KATA
mclloyd
PRO
35
15k
How GitHub (no longer) Works
holman
316
150k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
It's Worth the Effort
3n
188
29k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
290
Transcript
(SFOBEF 5ZQFTBGFJOUFOUCVJMEFS ,FJTVLF,PCBZBTIJ QPUBUPUJQT
,FJTVLF,PCBZBTIJ w (JU)VC 2JJUB!LPCBLFJ w 5XJUUFS!LTL@LCZT w $PVCJD *OD w
"OESPJE#BDLFOEFOHJOFFS
໌ࣔత*OUFOUͷ࡞Γํ
#BTJD Intent intent = new Intent(context, HogeActivity.class); startActivity(intent);
XJUIFYUSB Intent intent = new Intent(context, HogeActivity.class); intent.putExtra("name", "Takashi"); intent.putExtra("age",
30); startActivity(intent);
XJUIFYUSB Intent intent = new Intent(context, HogeActivity.class); intent.putExtra("name", "Takashi"); intent.putExtra("age",
30); startActivity(intent); String name = getIntent().getStringExtra("name"); int age = getIntent().getIntExtra("age", 0);
XJUIFYUSB Intent intent = new Intent(context, HogeActivity.class); intent.putExtra("name", "Takashi"); intent.putExtra("age",
30); startActivity(intent); String name = getIntent().getStringExtra("name"); int age = getIntent().getIntExtra("age", 0); w ͍ΖΜͳը໘ʹఆ͕ग़ͯདྷΔ
XJUIFYUSB Intent intent = new Intent(context, HogeActivity.class); intent.putExtra("name", "Takashi"); intent.putExtra("age",
30); startActivity(intent); String name = getIntent().getStringExtra("name"); int age = getIntent().getIntExtra("age", 0); w ͍ΖΜͳը໘ʹఆ͕ग़ͯདྷΔ w มΛ٧ΊΕͯίϯύΠϧΤϥʔग़ͳ͍
TUBUJDNFUIPE static void startActivity(Context context, String name, int age) {
Intent intent = new Intent(context, HogeActivity.class); intent.putExtra(KEY_NAME, "Takashi"); intent.putExtra(KEY_AGE, 30); context.startActivity(intent); } String name = getIntent().getStringExtra(KEY_NAME); int age = getIntent().getIntExtra(KEY_AGE, 0);
ͦ͏ͩɺࣗಈੜ͠Α͏
(SFOBEF IUUQTHJUIVCDPNLPCBLFJHSFOBEF
6TBHF @Navigator public class DetailActivity extends AppCompatActivity { // Required
params @Extra String name; // Optional params @Extra @Optional int age; ... }
6TBHF startActivity(new DetailActivityNavigator("Takashi") .age(30) .flags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) .build(context);
6TBHF @Navigator public class DetailActivity extends AppCompatActivity { ... @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Inject fields DetailActivityNavigator.inject(this, getIntent()); } }
4FWFSBMDPOTUSVDUPST @Navigator({ "foo,bar1", "foo,bar2" }) public class DetailActivity extends AppCompatActivity
{ @Extra String foo; @Extra int bar1; @Extra long bar2; ... }
4FWFSBMDPOTUSVDUPST startActivity(new DetailActivityNavigator(foo, bar1) .build(context)); startActivity(new DetailActivityNavigator(foo, bar2) .build(context));
8PSLXJUI1BSDFMFS @Navigator public class DetailActivity extends AppCompatActivity { // Use
parcelable entity as field @Extra User user; ... }
8PSLXJUI1BSDFMFS startActivity(new DetailActivityNavigator(new User()) .build(context));
None