質問: 現在、「開いているタブボタン」を押した際に、設定しているWebViewの再読込(Top画面)を読み込むにはどのようにすればよいのでしょうか? 詳細: お世話なっております。 今回、自分のコードではないので文章で説明させていただきます。 現在、4タブ画面(FragmentTabHostを使用)にWebViewを設定。 各画面ごとに最初にHPのTOP画面を表示されており、HP内の内容が読めるようにしています。 例えるなら、各タブにニュースサイトが4つ当てはめらており、内部の記事が読めるようになっております。 ご相談したいのは、すでに「開いているタブボタン」を押した際に「そのタブのTop画面」を表示させる(再読込?)する方法についてです。 TabFragment.javaのonActivityCreatedに以下のコードを追加し、タブ0を押した際にイベントを拾うところまでできたのですが、再読込する方法を模索している状況です。 自分はまだ、Androidの勉強を初めて一年ちょっとの素人です。 このところ理解不足から「思い込み」で時間を潰すことが多いことからご相談させていただきました。 アドバイスを頂ければ幸いです。 ``` mTabHost.getTabWidget().getChidTabViewAt(0).setOnClickListener(new onClickListener()){ //@Override public void onClick(View v){ Log.e("mTabHost.getTabWidget()","タブ0が押された") } }); ``` 補足させていただきます。 ただ、上で記載した通り自分のコードではないのでぼかした感じでご容赦ください。 onActivityCreatedに ``` mTabHost =(FragmentTabHost)this.〜(〜.tabhost); mTabHost.setup(This.〜,this〜) for(int i=0; i<4;i++){ mTabHost.addTab(mTabHost.newTabSpec(〜).〜fragments[i],null); } mTabHost.setCurentTab(0); ``` 動作ができるようになったのでコードを記載します。 tab0の表示のときのみsetCurrentTab(1)→setCurrentTab(0) tab1〜3はsetCurrentTab(0)→setCurrentTab(各タブ(1,2,3))で 無理やり動作させているのですが、目的の動作が可能となりました。 ありがとうございました。 ``` //tab0 再クリック時に表示画面を戻す mTabHost.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.e("mTabHost.getTabWidget()", "tab0 クリック"); mTabHost.setCurrentTab(1);//一度、tab1を表示させ(なんちゃって初期化?)すぐに下を表示させる) mTabHost.setCurrentTab(0);//これでtab0が表示される } }); //tab1 再クリック時に表示画面を戻す mTabHost.getTabWidget().getChildAt(1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.e("mTabHost.getTabWidget()", "tab1 クリック"); mTabHost.setCurrentTab(0);//一度、tab0を表示させ(なんちゃって初期化?)すぐに下を表示させる) mTabHost.setCurrentTab(1);//これでtab1が表示される } }); ```
回答: `FragmentTabHost`のJavadocにも有用な情報がなかったのでソースも見てみました。 `mTabHost.setup()`で、引数3つ版の第3引数で、実際にどのコンテナIDにFragmentを貼るかを指定できます。なので、現在表示中の`Fragment`を取得するには、`setup()`の第2引数で渡したのと同じ`FragmentManager`に対して`findFragmentById()`を呼ぶことで、現在表示中の`Fragment`が取得できると思います。