FragmentTabHost.smali 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943
  1. .class public Landroid/support/v4/app/FragmentTabHost;
  2. .super Landroid/widget/TabHost;
  3. .source "FragmentTabHost.java"
  4. # interfaces
  5. .implements Landroid/widget/TabHost$OnTabChangeListener;
  6. # annotations
  7. .annotation system Ldalvik/annotation/MemberClasses;
  8. value = {
  9. Landroid/support/v4/app/FragmentTabHost$1;,
  10. Landroid/support/v4/app/FragmentTabHost$SavedState;,
  11. Landroid/support/v4/app/FragmentTabHost$DummyTabFactory;,
  12. Landroid/support/v4/app/FragmentTabHost$TabInfo;
  13. }
  14. .end annotation
  15. # instance fields
  16. .field private mAttached:Z
  17. .field private mContainerId:I
  18. .field private mContext:Landroid/content/Context;
  19. .field private mFragmentManager:Landroid/support/v4/app/FragmentManager;
  20. .field private mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  21. .field private mOnTabChangeListener:Landroid/widget/TabHost$OnTabChangeListener;
  22. .field private mRealTabContent:Landroid/widget/FrameLayout;
  23. .field private final mTabs:Ljava/util/ArrayList;
  24. .annotation system Ldalvik/annotation/Signature;
  25. value = {
  26. "Ljava/util/ArrayList",
  27. "<",
  28. "Landroid/support/v4/app/FragmentTabHost$TabInfo;",
  29. ">;"
  30. }
  31. .end annotation
  32. .end field
  33. # direct methods
  34. .method public constructor <init>(Landroid/content/Context;)V
  35. .locals 2
  36. .param p1, "context" # Landroid/content/Context;
  37. .prologue
  38. const/4 v1, 0x0
  39. .line 130
  40. invoke-direct {p0, p1, v1}, Landroid/widget/TabHost;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
  41. .line 52
  42. new-instance v0, Ljava/util/ArrayList;
  43. invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
  44. iput-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  45. .line 131
  46. invoke-direct {p0, p1, v1}, Landroid/support/v4/app/FragmentTabHost;->initFragmentTabHost(Landroid/content/Context;Landroid/util/AttributeSet;)V
  47. .line 132
  48. return-void
  49. .end method
  50. .method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
  51. .locals 1
  52. .param p1, "context" # Landroid/content/Context;
  53. .param p2, "attrs" # Landroid/util/AttributeSet;
  54. .prologue
  55. .line 135
  56. invoke-direct {p0, p1, p2}, Landroid/widget/TabHost;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
  57. .line 52
  58. new-instance v0, Ljava/util/ArrayList;
  59. invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
  60. iput-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  61. .line 136
  62. invoke-direct {p0, p1, p2}, Landroid/support/v4/app/FragmentTabHost;->initFragmentTabHost(Landroid/content/Context;Landroid/util/AttributeSet;)V
  63. .line 137
  64. return-void
  65. .end method
  66. .method private doTabChanged(Ljava/lang/String;Landroid/support/v4/app/FragmentTransaction;)Landroid/support/v4/app/FragmentTransaction;
  67. .locals 6
  68. .param p1, "tabId" # Ljava/lang/String;
  69. .param p2, "ft" # Landroid/support/v4/app/FragmentTransaction;
  70. .prologue
  71. .line 322
  72. const/4 v1, 0x0
  73. .line 323
  74. .local v1, "newTab":Landroid/support/v4/app/FragmentTabHost$TabInfo;
  75. const/4 v0, 0x0
  76. .local v0, "i":I
  77. :goto_0
  78. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  79. invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
  80. move-result v3
  81. if-ge v0, v3, :cond_1
  82. .line 324
  83. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  84. invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  85. move-result-object v2
  86. check-cast v2, Landroid/support/v4/app/FragmentTabHost$TabInfo;
  87. .line 325
  88. .local v2, "tab":Landroid/support/v4/app/FragmentTabHost$TabInfo;
  89. invoke-static {v2}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$200(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Ljava/lang/String;
  90. move-result-object v3
  91. invoke-virtual {v3, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  92. move-result v3
  93. if-eqz v3, :cond_0
  94. .line 326
  95. move-object v1, v2
  96. .line 323
  97. :cond_0
  98. add-int/lit8 v0, v0, 0x1
  99. goto :goto_0
  100. .line 329
  101. .end local v2 # "tab":Landroid/support/v4/app/FragmentTabHost$TabInfo;
  102. :cond_1
  103. if-nez v1, :cond_2
  104. .line 330
  105. new-instance v3, Ljava/lang/IllegalStateException;
  106. new-instance v4, Ljava/lang/StringBuilder;
  107. invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
  108. const-string v5, "No tab known for tag "
  109. invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  110. move-result-object v4
  111. invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  112. move-result-object v4
  113. invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  114. move-result-object v4
  115. invoke-direct {v3, v4}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  116. throw v3
  117. .line 332
  118. :cond_2
  119. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  120. if-eq v3, v1, :cond_6
  121. .line 333
  122. if-nez p2, :cond_3
  123. .line 334
  124. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  125. invoke-virtual {v3}, Landroid/support/v4/app/FragmentManager;->beginTransaction()Landroid/support/v4/app/FragmentTransaction;
  126. move-result-object p2
  127. .line 336
  128. :cond_3
  129. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  130. if-eqz v3, :cond_4
  131. .line 337
  132. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  133. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  134. move-result-object v3
  135. if-eqz v3, :cond_4
  136. .line 338
  137. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  138. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  139. move-result-object v3
  140. invoke-virtual {p2, v3}, Landroid/support/v4/app/FragmentTransaction;->detach(Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/FragmentTransaction;
  141. .line 341
  142. :cond_4
  143. if-eqz v1, :cond_5
  144. .line 342
  145. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  146. move-result-object v3
  147. if-nez v3, :cond_7
  148. .line 343
  149. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mContext:Landroid/content/Context;
  150. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$300(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Ljava/lang/Class;
  151. move-result-object v4
  152. invoke-virtual {v4}, Ljava/lang/Class;->getName()Ljava/lang/String;
  153. move-result-object v4
  154. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$400(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/os/Bundle;
  155. move-result-object v5
  156. invoke-static {v3, v4, v5}, Landroid/support/v4/app/Fragment;->instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/support/v4/app/Fragment;
  157. move-result-object v3
  158. invoke-static {v1, v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$102(Landroid/support/v4/app/FragmentTabHost$TabInfo;Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/Fragment;
  159. .line 345
  160. iget v3, p0, Landroid/support/v4/app/FragmentTabHost;->mContainerId:I
  161. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  162. move-result-object v4
  163. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$200(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Ljava/lang/String;
  164. move-result-object v5
  165. invoke-virtual {p2, v3, v4, v5}, Landroid/support/v4/app/FragmentTransaction;->add(ILandroid/support/v4/app/Fragment;Ljava/lang/String;)Landroid/support/v4/app/FragmentTransaction;
  166. .line 351
  167. :cond_5
  168. :goto_1
  169. iput-object v1, p0, Landroid/support/v4/app/FragmentTabHost;->mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  170. .line 353
  171. :cond_6
  172. return-object p2
  173. .line 347
  174. :cond_7
  175. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  176. move-result-object v3
  177. invoke-virtual {p2, v3}, Landroid/support/v4/app/FragmentTransaction;->attach(Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/FragmentTransaction;
  178. goto :goto_1
  179. .end method
  180. .method private ensureContent()V
  181. .locals 3
  182. .prologue
  183. .line 212
  184. iget-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mRealTabContent:Landroid/widget/FrameLayout;
  185. if-nez v0, :cond_0
  186. .line 213
  187. iget v0, p0, Landroid/support/v4/app/FragmentTabHost;->mContainerId:I
  188. invoke-virtual {p0, v0}, Landroid/support/v4/app/FragmentTabHost;->findViewById(I)Landroid/view/View;
  189. move-result-object v0
  190. check-cast v0, Landroid/widget/FrameLayout;
  191. iput-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mRealTabContent:Landroid/widget/FrameLayout;
  192. .line 214
  193. iget-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mRealTabContent:Landroid/widget/FrameLayout;
  194. if-nez v0, :cond_0
  195. .line 215
  196. new-instance v0, Ljava/lang/IllegalStateException;
  197. new-instance v1, Ljava/lang/StringBuilder;
  198. invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
  199. const-string v2, "No tab content FrameLayout found for id "
  200. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
  201. move-result-object v1
  202. iget v2, p0, Landroid/support/v4/app/FragmentTabHost;->mContainerId:I
  203. invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
  204. move-result-object v1
  205. invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
  206. move-result-object v1
  207. invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  208. throw v0
  209. .line 219
  210. :cond_0
  211. return-void
  212. .end method
  213. .method private ensureHierarchy(Landroid/content/Context;)V
  214. .locals 8
  215. .param p1, "context" # Landroid/content/Context;
  216. .prologue
  217. const v4, 0x1020013
  218. const/4 v7, 0x0
  219. const/4 v6, 0x0
  220. const/4 v5, -0x1
  221. .line 151
  222. invoke-virtual {p0, v4}, Landroid/support/v4/app/FragmentTabHost;->findViewById(I)Landroid/view/View;
  223. move-result-object v3
  224. if-nez v3, :cond_0
  225. .line 152
  226. new-instance v1, Landroid/widget/LinearLayout;
  227. invoke-direct {v1, p1}, Landroid/widget/LinearLayout;-><init>(Landroid/content/Context;)V
  228. .line 153
  229. .local v1, "ll":Landroid/widget/LinearLayout;
  230. const/4 v3, 0x1
  231. invoke-virtual {v1, v3}, Landroid/widget/LinearLayout;->setOrientation(I)V
  232. .line 154
  233. new-instance v3, Landroid/widget/FrameLayout$LayoutParams;
  234. invoke-direct {v3, v5, v5}, Landroid/widget/FrameLayout$LayoutParams;-><init>(II)V
  235. invoke-virtual {p0, v1, v3}, Landroid/support/v4/app/FragmentTabHost;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
  236. .line 158
  237. new-instance v2, Landroid/widget/TabWidget;
  238. invoke-direct {v2, p1}, Landroid/widget/TabWidget;-><init>(Landroid/content/Context;)V
  239. .line 159
  240. .local v2, "tw":Landroid/widget/TabWidget;
  241. invoke-virtual {v2, v4}, Landroid/widget/TabWidget;->setId(I)V
  242. .line 160
  243. invoke-virtual {v2, v6}, Landroid/widget/TabWidget;->setOrientation(I)V
  244. .line 161
  245. new-instance v3, Landroid/widget/LinearLayout$LayoutParams;
  246. const/4 v4, -0x2
  247. invoke-direct {v3, v5, v4, v7}, Landroid/widget/LinearLayout$LayoutParams;-><init>(IIF)V
  248. invoke-virtual {v1, v2, v3}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
  249. .line 165
  250. new-instance v0, Landroid/widget/FrameLayout;
  251. invoke-direct {v0, p1}, Landroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V
  252. .line 166
  253. .local v0, "fl":Landroid/widget/FrameLayout;
  254. const v3, 0x1020011
  255. invoke-virtual {v0, v3}, Landroid/widget/FrameLayout;->setId(I)V
  256. .line 167
  257. new-instance v3, Landroid/widget/LinearLayout$LayoutParams;
  258. invoke-direct {v3, v6, v6, v7}, Landroid/widget/LinearLayout$LayoutParams;-><init>(IIF)V
  259. invoke-virtual {v1, v0, v3}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
  260. .line 169
  261. new-instance v0, Landroid/widget/FrameLayout;
  262. .end local v0 # "fl":Landroid/widget/FrameLayout;
  263. invoke-direct {v0, p1}, Landroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V
  264. .restart local v0 # "fl":Landroid/widget/FrameLayout;
  265. iput-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mRealTabContent:Landroid/widget/FrameLayout;
  266. .line 170
  267. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mRealTabContent:Landroid/widget/FrameLayout;
  268. iget v4, p0, Landroid/support/v4/app/FragmentTabHost;->mContainerId:I
  269. invoke-virtual {v3, v4}, Landroid/widget/FrameLayout;->setId(I)V
  270. .line 171
  271. new-instance v3, Landroid/widget/LinearLayout$LayoutParams;
  272. const/high16 v4, 0x3f800000 # 1.0f
  273. invoke-direct {v3, v5, v6, v4}, Landroid/widget/LinearLayout$LayoutParams;-><init>(IIF)V
  274. invoke-virtual {v1, v0, v3}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
  275. .line 174
  276. .end local v0 # "fl":Landroid/widget/FrameLayout;
  277. .end local v1 # "ll":Landroid/widget/LinearLayout;
  278. .end local v2 # "tw":Landroid/widget/TabWidget;
  279. :cond_0
  280. return-void
  281. .end method
  282. .method private initFragmentTabHost(Landroid/content/Context;Landroid/util/AttributeSet;)V
  283. .locals 4
  284. .param p1, "context" # Landroid/content/Context;
  285. .param p2, "attrs" # Landroid/util/AttributeSet;
  286. .prologue
  287. const/4 v3, 0x0
  288. .line 140
  289. const/4 v1, 0x1
  290. new-array v1, v1, [I
  291. const v2, 0x10100f3
  292. aput v2, v1, v3
  293. invoke-virtual {p1, p2, v1, v3, v3}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;
  294. move-result-object v0
  295. .line 142
  296. .local v0, "a":Landroid/content/res/TypedArray;
  297. invoke-virtual {v0, v3, v3}, Landroid/content/res/TypedArray;->getResourceId(II)I
  298. move-result v1
  299. iput v1, p0, Landroid/support/v4/app/FragmentTabHost;->mContainerId:I
  300. .line 143
  301. invoke-virtual {v0}, Landroid/content/res/TypedArray;->recycle()V
  302. .line 145
  303. invoke-super {p0, p0}, Landroid/widget/TabHost;->setOnTabChangedListener(Landroid/widget/TabHost$OnTabChangeListener;)V
  304. .line 146
  305. return-void
  306. .end method
  307. # virtual methods
  308. .method public addTab(Landroid/widget/TabHost$TabSpec;Ljava/lang/Class;Landroid/os/Bundle;)V
  309. .locals 5
  310. .param p1, "tabSpec" # Landroid/widget/TabHost$TabSpec;
  311. .param p3, "args" # Landroid/os/Bundle;
  312. .annotation system Ldalvik/annotation/Signature;
  313. value = {
  314. "(",
  315. "Landroid/widget/TabHost$TabSpec;",
  316. "Ljava/lang/Class",
  317. "<*>;",
  318. "Landroid/os/Bundle;",
  319. ")V"
  320. }
  321. .end annotation
  322. .prologue
  323. .line 227
  324. .local p2, "clss":Ljava/lang/Class;, "Ljava/lang/Class<*>;"
  325. new-instance v3, Landroid/support/v4/app/FragmentTabHost$DummyTabFactory;
  326. iget-object v4, p0, Landroid/support/v4/app/FragmentTabHost;->mContext:Landroid/content/Context;
  327. invoke-direct {v3, v4}, Landroid/support/v4/app/FragmentTabHost$DummyTabFactory;-><init>(Landroid/content/Context;)V
  328. invoke-virtual {p1, v3}, Landroid/widget/TabHost$TabSpec;->setContent(Landroid/widget/TabHost$TabContentFactory;)Landroid/widget/TabHost$TabSpec;
  329. .line 228
  330. invoke-virtual {p1}, Landroid/widget/TabHost$TabSpec;->getTag()Ljava/lang/String;
  331. move-result-object v2
  332. .line 230
  333. .local v2, "tag":Ljava/lang/String;
  334. new-instance v1, Landroid/support/v4/app/FragmentTabHost$TabInfo;
  335. invoke-direct {v1, v2, p2, p3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;-><init>(Ljava/lang/String;Ljava/lang/Class;Landroid/os/Bundle;)V
  336. .line 232
  337. .local v1, "info":Landroid/support/v4/app/FragmentTabHost$TabInfo;
  338. iget-boolean v3, p0, Landroid/support/v4/app/FragmentTabHost;->mAttached:Z
  339. if-eqz v3, :cond_0
  340. .line 236
  341. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  342. invoke-virtual {v3, v2}, Landroid/support/v4/app/FragmentManager;->findFragmentByTag(Ljava/lang/String;)Landroid/support/v4/app/Fragment;
  343. move-result-object v3
  344. invoke-static {v1, v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$102(Landroid/support/v4/app/FragmentTabHost$TabInfo;Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/Fragment;
  345. .line 237
  346. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  347. move-result-object v3
  348. if-eqz v3, :cond_0
  349. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  350. move-result-object v3
  351. invoke-virtual {v3}, Landroid/support/v4/app/Fragment;->isDetached()Z
  352. move-result v3
  353. if-nez v3, :cond_0
  354. .line 238
  355. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  356. invoke-virtual {v3}, Landroid/support/v4/app/FragmentManager;->beginTransaction()Landroid/support/v4/app/FragmentTransaction;
  357. move-result-object v0
  358. .line 239
  359. .local v0, "ft":Landroid/support/v4/app/FragmentTransaction;
  360. invoke-static {v1}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  361. move-result-object v3
  362. invoke-virtual {v0, v3}, Landroid/support/v4/app/FragmentTransaction;->detach(Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/FragmentTransaction;
  363. .line 240
  364. invoke-virtual {v0}, Landroid/support/v4/app/FragmentTransaction;->commit()I
  365. .line 244
  366. .end local v0 # "ft":Landroid/support/v4/app/FragmentTransaction;
  367. :cond_0
  368. iget-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  369. invoke-virtual {v3, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  370. .line 245
  371. invoke-virtual {p0, p1}, Landroid/support/v4/app/FragmentTabHost;->addTab(Landroid/widget/TabHost$TabSpec;)V
  372. .line 246
  373. return-void
  374. .end method
  375. .method protected onAttachedToWindow()V
  376. .locals 6
  377. .prologue
  378. .line 250
  379. invoke-super {p0}, Landroid/widget/TabHost;->onAttachedToWindow()V
  380. .line 252
  381. invoke-virtual {p0}, Landroid/support/v4/app/FragmentTabHost;->getCurrentTabTag()Ljava/lang/String;
  382. move-result-object v0
  383. .line 256
  384. .local v0, "currentTab":Ljava/lang/String;
  385. const/4 v1, 0x0
  386. .line 257
  387. .local v1, "ft":Landroid/support/v4/app/FragmentTransaction;
  388. const/4 v2, 0x0
  389. .local v2, "i":I
  390. :goto_0
  391. iget-object v4, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  392. invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
  393. move-result v4
  394. if-ge v2, v4, :cond_3
  395. .line 258
  396. iget-object v4, p0, Landroid/support/v4/app/FragmentTabHost;->mTabs:Ljava/util/ArrayList;
  397. invoke-virtual {v4, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
  398. move-result-object v3
  399. check-cast v3, Landroid/support/v4/app/FragmentTabHost$TabInfo;
  400. .line 259
  401. .local v3, "tab":Landroid/support/v4/app/FragmentTabHost$TabInfo;
  402. iget-object v4, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  403. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$200(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Ljava/lang/String;
  404. move-result-object v5
  405. invoke-virtual {v4, v5}, Landroid/support/v4/app/FragmentManager;->findFragmentByTag(Ljava/lang/String;)Landroid/support/v4/app/Fragment;
  406. move-result-object v4
  407. invoke-static {v3, v4}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$102(Landroid/support/v4/app/FragmentTabHost$TabInfo;Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/Fragment;
  408. .line 260
  409. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  410. move-result-object v4
  411. if-eqz v4, :cond_0
  412. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  413. move-result-object v4
  414. invoke-virtual {v4}, Landroid/support/v4/app/Fragment;->isDetached()Z
  415. move-result v4
  416. if-nez v4, :cond_0
  417. .line 261
  418. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$200(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Ljava/lang/String;
  419. move-result-object v4
  420. invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  421. move-result v4
  422. if-eqz v4, :cond_1
  423. .line 265
  424. iput-object v3, p0, Landroid/support/v4/app/FragmentTabHost;->mLastTab:Landroid/support/v4/app/FragmentTabHost$TabInfo;
  425. .line 257
  426. :cond_0
  427. :goto_1
  428. add-int/lit8 v2, v2, 0x1
  429. goto :goto_0
  430. .line 269
  431. :cond_1
  432. if-nez v1, :cond_2
  433. .line 270
  434. iget-object v4, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  435. invoke-virtual {v4}, Landroid/support/v4/app/FragmentManager;->beginTransaction()Landroid/support/v4/app/FragmentTransaction;
  436. move-result-object v1
  437. .line 272
  438. :cond_2
  439. invoke-static {v3}, Landroid/support/v4/app/FragmentTabHost$TabInfo;->access$100(Landroid/support/v4/app/FragmentTabHost$TabInfo;)Landroid/support/v4/app/Fragment;
  440. move-result-object v4
  441. invoke-virtual {v1, v4}, Landroid/support/v4/app/FragmentTransaction;->detach(Landroid/support/v4/app/Fragment;)Landroid/support/v4/app/FragmentTransaction;
  442. goto :goto_1
  443. .line 279
  444. .end local v3 # "tab":Landroid/support/v4/app/FragmentTabHost$TabInfo;
  445. :cond_3
  446. const/4 v4, 0x1
  447. iput-boolean v4, p0, Landroid/support/v4/app/FragmentTabHost;->mAttached:Z
  448. .line 280
  449. invoke-direct {p0, v0, v1}, Landroid/support/v4/app/FragmentTabHost;->doTabChanged(Ljava/lang/String;Landroid/support/v4/app/FragmentTransaction;)Landroid/support/v4/app/FragmentTransaction;
  450. move-result-object v1
  451. .line 281
  452. if-eqz v1, :cond_4
  453. .line 282
  454. invoke-virtual {v1}, Landroid/support/v4/app/FragmentTransaction;->commit()I
  455. .line 283
  456. iget-object v4, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  457. invoke-virtual {v4}, Landroid/support/v4/app/FragmentManager;->executePendingTransactions()Z
  458. .line 285
  459. :cond_4
  460. return-void
  461. .end method
  462. .method protected onDetachedFromWindow()V
  463. .locals 1
  464. .prologue
  465. .line 289
  466. invoke-super {p0}, Landroid/widget/TabHost;->onDetachedFromWindow()V
  467. .line 290
  468. const/4 v0, 0x0
  469. iput-boolean v0, p0, Landroid/support/v4/app/FragmentTabHost;->mAttached:Z
  470. .line 291
  471. return-void
  472. .end method
  473. .method protected onRestoreInstanceState(Landroid/os/Parcelable;)V
  474. .locals 2
  475. .param p1, "state" # Landroid/os/Parcelable;
  476. .prologue
  477. .line 303
  478. move-object v0, p1
  479. check-cast v0, Landroid/support/v4/app/FragmentTabHost$SavedState;
  480. .line 304
  481. .local v0, "ss":Landroid/support/v4/app/FragmentTabHost$SavedState;
  482. invoke-virtual {v0}, Landroid/support/v4/app/FragmentTabHost$SavedState;->getSuperState()Landroid/os/Parcelable;
  483. move-result-object v1
  484. invoke-super {p0, v1}, Landroid/widget/TabHost;->onRestoreInstanceState(Landroid/os/Parcelable;)V
  485. .line 305
  486. iget-object v1, v0, Landroid/support/v4/app/FragmentTabHost$SavedState;->curTab:Ljava/lang/String;
  487. invoke-virtual {p0, v1}, Landroid/support/v4/app/FragmentTabHost;->setCurrentTabByTag(Ljava/lang/String;)V
  488. .line 306
  489. return-void
  490. .end method
  491. .method protected onSaveInstanceState()Landroid/os/Parcelable;
  492. .locals 3
  493. .prologue
  494. .line 295
  495. invoke-super {p0}, Landroid/widget/TabHost;->onSaveInstanceState()Landroid/os/Parcelable;
  496. move-result-object v1
  497. .line 296
  498. .local v1, "superState":Landroid/os/Parcelable;
  499. new-instance v0, Landroid/support/v4/app/FragmentTabHost$SavedState;
  500. invoke-direct {v0, v1}, Landroid/support/v4/app/FragmentTabHost$SavedState;-><init>(Landroid/os/Parcelable;)V
  501. .line 297
  502. .local v0, "ss":Landroid/support/v4/app/FragmentTabHost$SavedState;
  503. invoke-virtual {p0}, Landroid/support/v4/app/FragmentTabHost;->getCurrentTabTag()Ljava/lang/String;
  504. move-result-object v2
  505. iput-object v2, v0, Landroid/support/v4/app/FragmentTabHost$SavedState;->curTab:Ljava/lang/String;
  506. .line 298
  507. return-object v0
  508. .end method
  509. .method public onTabChanged(Ljava/lang/String;)V
  510. .locals 2
  511. .param p1, "tabId" # Ljava/lang/String;
  512. .prologue
  513. .line 310
  514. iget-boolean v1, p0, Landroid/support/v4/app/FragmentTabHost;->mAttached:Z
  515. if-eqz v1, :cond_0
  516. .line 311
  517. const/4 v1, 0x0
  518. invoke-direct {p0, p1, v1}, Landroid/support/v4/app/FragmentTabHost;->doTabChanged(Ljava/lang/String;Landroid/support/v4/app/FragmentTransaction;)Landroid/support/v4/app/FragmentTransaction;
  519. move-result-object v0
  520. .line 312
  521. .local v0, "ft":Landroid/support/v4/app/FragmentTransaction;
  522. if-eqz v0, :cond_0
  523. .line 313
  524. invoke-virtual {v0}, Landroid/support/v4/app/FragmentTransaction;->commit()I
  525. .line 316
  526. .end local v0 # "ft":Landroid/support/v4/app/FragmentTransaction;
  527. :cond_0
  528. iget-object v1, p0, Landroid/support/v4/app/FragmentTabHost;->mOnTabChangeListener:Landroid/widget/TabHost$OnTabChangeListener;
  529. if-eqz v1, :cond_1
  530. .line 317
  531. iget-object v1, p0, Landroid/support/v4/app/FragmentTabHost;->mOnTabChangeListener:Landroid/widget/TabHost$OnTabChangeListener;
  532. invoke-interface {v1, p1}, Landroid/widget/TabHost$OnTabChangeListener;->onTabChanged(Ljava/lang/String;)V
  533. .line 319
  534. :cond_1
  535. return-void
  536. .end method
  537. .method public setOnTabChangedListener(Landroid/widget/TabHost$OnTabChangeListener;)V
  538. .locals 0
  539. .param p1, "l" # Landroid/widget/TabHost$OnTabChangeListener;
  540. .prologue
  541. .line 223
  542. iput-object p1, p0, Landroid/support/v4/app/FragmentTabHost;->mOnTabChangeListener:Landroid/widget/TabHost$OnTabChangeListener;
  543. .line 224
  544. return-void
  545. .end method
  546. .method public setup()V
  547. .locals 2
  548. .annotation runtime Ljava/lang/Deprecated;
  549. .end annotation
  550. .prologue
  551. .line 183
  552. new-instance v0, Ljava/lang/IllegalStateException;
  553. const-string v1, "Must call setup() that takes a Context and FragmentManager"
  554. invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
  555. throw v0
  556. .end method
  557. .method public setup(Landroid/content/Context;Landroid/support/v4/app/FragmentManager;)V
  558. .locals 0
  559. .param p1, "context" # Landroid/content/Context;
  560. .param p2, "manager" # Landroid/support/v4/app/FragmentManager;
  561. .prologue
  562. .line 188
  563. invoke-direct {p0, p1}, Landroid/support/v4/app/FragmentTabHost;->ensureHierarchy(Landroid/content/Context;)V
  564. .line 189
  565. invoke-super {p0}, Landroid/widget/TabHost;->setup()V
  566. .line 190
  567. iput-object p1, p0, Landroid/support/v4/app/FragmentTabHost;->mContext:Landroid/content/Context;
  568. .line 191
  569. iput-object p2, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  570. .line 192
  571. invoke-direct {p0}, Landroid/support/v4/app/FragmentTabHost;->ensureContent()V
  572. .line 193
  573. return-void
  574. .end method
  575. .method public setup(Landroid/content/Context;Landroid/support/v4/app/FragmentManager;I)V
  576. .locals 2
  577. .param p1, "context" # Landroid/content/Context;
  578. .param p2, "manager" # Landroid/support/v4/app/FragmentManager;
  579. .param p3, "containerId" # I
  580. .prologue
  581. .line 196
  582. invoke-direct {p0, p1}, Landroid/support/v4/app/FragmentTabHost;->ensureHierarchy(Landroid/content/Context;)V
  583. .line 197
  584. invoke-super {p0}, Landroid/widget/TabHost;->setup()V
  585. .line 198
  586. iput-object p1, p0, Landroid/support/v4/app/FragmentTabHost;->mContext:Landroid/content/Context;
  587. .line 199
  588. iput-object p2, p0, Landroid/support/v4/app/FragmentTabHost;->mFragmentManager:Landroid/support/v4/app/FragmentManager;
  589. .line 200
  590. iput p3, p0, Landroid/support/v4/app/FragmentTabHost;->mContainerId:I
  591. .line 201
  592. invoke-direct {p0}, Landroid/support/v4/app/FragmentTabHost;->ensureContent()V
  593. .line 202
  594. iget-object v0, p0, Landroid/support/v4/app/FragmentTabHost;->mRealTabContent:Landroid/widget/FrameLayout;
  595. invoke-virtual {v0, p3}, Landroid/widget/FrameLayout;->setId(I)V
  596. .line 206
  597. invoke-virtual {p0}, Landroid/support/v4/app/FragmentTabHost;->getId()I
  598. move-result v0
  599. const/4 v1, -0x1
  600. if-ne v0, v1, :cond_0
  601. .line 207
  602. const v0, 0x1020012
  603. invoke-virtual {p0, v0}, Landroid/support/v4/app/FragmentTabHost;->setId(I)V
  604. .line 209
  605. :cond_0
  606. return-void
  607. .end method