- Tablayout + ViewPagerの使用に活性のフラグメントを充填
ViewPagerは何の問題を使用しないでフラグメントと異なる状況でより少ない量では、あなたは、それぞれ異なるフラグメントを作成することができます。
しかし、フラグメント変数の数と同じ形式の内容ならば、レイアウト内部多重同じフラグメントを使用することが必要です。しかし、この時間は問題になり、良好な負荷データは、記入します
リストViewPagerとTabLayout後、インターフェイス上の効果のみ]タブでは、タブをクリックすると、フラグメントが対応していない、ギャップや状況の位置ずれがあるだろう、正常です。
- 問題の原因:
FragmentManagerが活動中で、パラメータを渡すためにどのFragmentPagerAdapterを、使用するために、ViewPagerを使用する場合は、我々は簡単にだけ渡すことができます
getSupportFragmentManager()、(今ためフラグメントV4パケット、APPパケット断片と対応getFragmentMangerを(使用)放棄されています)、
FragmentManager問題の存在が、彼は自動的に、フラグメントを再利用繰り返し破壊し、作成しないが、これはフラグメントを対応する別のタブに私たちをリードするだろうさ
これは、正常に作成されていないが、常にカバーの後ろに作成されています。
ViewPagerはデフォルトをプリロードするので3断片である、あなたは4番目のタブをクリックしたときに、それは空白ではなく、必ずしも正しいフラグメントをロードしません。
- ソリューション:
ViewPagerを用いて(1)第一の場合、アクティビティ
タイトルを保存TabLayout ViewPager、分類のみを使用しないでください、ViewPager位置はちょうど、断片、そしてTabLayoutモニタの設定を置きます
選択された場合tabLayout.addOnSelectedListener()、タブは、位置情報を取得し、その後にデータをロードするか、固有の位置情報フラグメントにより置換しました。
(2)別の場合には、複数のインターフェースから選択される2層を形成し、外側のフラグメントBottomNavigationViewと共通して、ネストViewPager断片であります
ViewPager PagerAdapterに設定すると、外側の層でgetChildFragmentManager()断片を使用することができる、内側層は、マネージャ多重フラグメントを行いません
また、空白の質問と見当違いは表示されません。(使用されることはありません)
- ステータスバーに浸漬上部のツールバーは、画面の上部をカバー
効果を達成するために、のstyles.xmlにおける対応の対象限りの文を追加
- のEditTextがインタフェースを開いたときに自動的に外をクリックしたときにフォーカスを失い、自動的にフォーカスを得ることはありません
設定されていない場合は、その後のEditTextが自動的にインターフェイスを入力するとき、フォーカスを取得し、他の位置でインターフェイスをクリックします、ソフトキーボードが回復されていない、最悪の経験
(1)第1の焦点が自動的に得られるように設定されていない、親レイアウトのEditTextにfocusableInTouchMode =「true」を追加
(2)季節のEditTextがフォーカスを失った外に、クリックしてソフトキーボードを回復します
EditTextでのポイントは外、それがフォーカスを失っせた場合のアプローチは、クリックイベントを監視することです
このような経験が良いだろう。
- ロック画面のロックを解除するとき推測インターフェイスがポップアップ
時には、ロックを解除する指紋た後、Jingdongのインターフェースは、その後、Jingdongは、またはの前に現れたときにインターフェイスをクリックしますが、もう一度ロールバックをクリックして、それはJingdongはを終了します、メインインターフェイスに戻るには、戻るボタンをクリックし、ポップアップ表示されます
戻るメイン画面に、もう一度、Jingdongはを指し、通常のプロセスを開始します。
最初の章の内容と合わせて「芸術的探求のAndroidの開発、」Jingdongの推測では、他のプロセスの使用は、独自の活動を開始し実行しているということです
这时Activity运行在其他进程的任务栈中,当第一次点击京东时,该Activity发现自己本应属于的任务栈启动了,就移动到京东进程的任务栈,
再次退回主界面,Actvity和任务栈被销毁。
(近期没使用京东,有机会再研究)
-- Activity的启动模式
- standard ,标准模式,点一下启动一个,无脑入栈
- singleTop 栈顶复用,
如果当前不在栈顶,就创建新实例入栈,和standard表现一致。
如果当前活动在栈顶,就不重复创建而调用 onNewIntent()。
(示例为将 BetaActivity设为 singleTop ,反复启动二三活动 以及重复启动BetaActivity时, 用adb shell 命令看到的栈信息)
BetaActivity不在栈顶的情况:会和ThirdActivity交替反复创建实例
BetaActivity在栈顶的情况: 不再创建新实例,栈中活动数不变
- singleTask 栈内复用
如果栈内有需要的活动,就将其显示出来。而要显示,就要把在其之上的活动全部出栈。
需要注意的是,如果两个任务栈分别在前台和后台,当启动后台的活动时,后台任务栈会移动到前台栈之前,成为前台任务栈,而栈中的弹出关系,也遵循
前面说过的规则。
- singleInstance 单例模式
单独在一个任务栈内,栈中只能有自己一个实例。(实际上也符合singleTask的特征)