質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

1回答

3033閲覧

android タブクリック イベント

Xsyarubuu

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2018/05/19 13:29

androidでアプリ開発を行っています。
FragmentTabHostでタブレイアウトを実装しました。

ホームタブに現在いるとして、再びホームタブをクリックした場合の処理を検知したいです。
現在のタブと同じタブをクリックした場合にタブFragment内のRecyclerViewのスクロール位置を一番上に移動させたいのです。
例えば、Instagramでタブ押したらスクロール位置が一番上に移動すると思います。

以下のコード(一部)のように、タブを実装しているのですが、どうFragmentに通知させるのでしょうか

public class MainActivity extends FragmentActivity { private Class[] fragmentClass = {Fragment1.class, Fragment2.class, Fragment3.class, Fragment4.class, Fragment5.class}; private int[] icons = {R.drawable.icon4_custom, R.drawable.icon1_custom, R.drawable.icon3_custom, R.drawable.icon2_custom, R.drawable.icon5_custom}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // FragmentTabHost を取得する FragmentTabHost tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); tabHost.setup(this, getSupportFragmentManager(), R.id.container); for (int i = 0; i < fragmentClass.length; i++) { View view = LayoutInflater.from(this).inflate(R.layout.tab_layout, null); ImageView image = (ImageView) view.findViewById(R.id.tab_icon); image.setImageResource(icons[i]); //Intent intent = new Intent(this,fragmentClass[i]); // TabSpec を生成する TabHost.TabSpec tabSpec = tabHost.newTabSpec("tab" + i); //tabSpec.setIndicator("",getResources().getDrawable(icons[i])); //tabSpec.setContent(intent); tabSpec.setIndicator(view); // TabHost に追加 tabHost.addTab(tabSpec, fragmentClass[i], null); } tabHost.setCurrentTab(0); } }

tab_layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" > <LinearLayout android:layout_width="44dp" android:layout_height="44dp" android:gravity="center" android:orientation="vertical" android:paddingBottom="4dp" android:paddingTop="4dp"> <ImageView android:id="@+id/tab_icon" android:layout_width="20dp" android:layout_height="20dp" /> </LinearLayout> </LinearLayout>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

TabHostではタブの再選択イベントは標準では実装されていないので、自分で実装する必要がありますね。こちらの記事が参考になるかと思います。

http://sakura-bird1.hatenablog.com/entry/20130219/1361254811

ちなみに、Design Support Libraryに含まれる TabLayout ならば、元々タブの再選択イベントが用意されていますので、TabHostを使うのにこだわりがないのであればそちらを使ったほうが簡単です。

投稿2018/05/26 07:14

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問