最初に表示されるタブでWebブラウジングしている途中で、新しいタブを追加した時の挙動を実装する・・・。
まず、strings.xmlで、
menu_item_add_tab_textの文字列を"新しいタブの追加"に・・・。
あとは、MainActivity.java・・・。
Map
タブ名とFragmentTransaction.addで追加したFragmentのペアをここにも追加・・・。
(FragmentManager.getFragmentsというListを返してくれる便利なメソッドがあったが、削除されている模様・・・。残念・・・。)
onCreateでは、HashMap
fragmentTransaction.add、fragmentTransaction.commitで、webFragment,を追加したら、fragmentMap.putでfragmentTagとwebFragmentのペアを追加・・・。
onOptionsItemSelectedにメニューアイテム選択時の動作を書く・・・。
menu_item_add_tab(新しいタブの追加)の時、まずfragmentTransactionを取得・・・。
fragmentMapから1つのペアentryを取り出し、entry.getValueで値を取り出す・・・。
キーはString、値はFragmentなので、1つ目のfragmentが取得できる・・・。
fragmentTransaction.hideでfragmentを非表示とする・・・。
追加前のfragmentはすべて非表示にしたいので、これをfragmentMapの中のentryの数の分だけ繰り返す・・・。
繰り返しが終ったら、新しいタグ名をfragmentTagに格納・・・。
webFragmentを生成して、fragmentTransaction.addでfragmentTagとともに追加・・・。
その後すぐ、fragmentTransaction.showで表示状態にしておく・・・。
そして、fragmentTransaction.commitで確定・・・。
fragmentMap.putでaddしたfragmentTagとwebFragmentのペアを追加・・・。
webFragmentNoはインクリメント・・・。
そしてsetMenuUrlBarでURLバーを空に・・・。
起動して、
Yahoo!のURLを入力・・・。
スポナビへ・・・。
さらに野球を押すと、
野球に・・・。
ここでメニューを出す・・・。
新しいタブの追加を押すと、
画面が真っ白で、URLバーも空の新しいタブが表示される・・・。
別のURLを入力して、
アクセスできるし、ここでバックキーを押すと、このタブは1ページ目しか表示されてないのでアクティビティが閉じられる・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc