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

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

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

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

解決済

AndroidStudioでViewPager2を使用したタブを実装したい

Lily_V
Lily_V

総合スコア7

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1回答

0評価

0クリップ

715閲覧

投稿2022/03/16 14:06

編集2022/03/18 22:28

前提・実現したいこと

AndroidStudio(Java)でスワイプもできるタブを実装したいです。
色々調べていたところ、ViewPager2とTabLayoutを使用する方法がよいのかと思い、
以下のサイトを参考にコードを組んでみました。
【参考】
https://developer.android.google.cn/guide/navigation/navigation-swipe-view-2?hl=ja#java

発生している問題

エラーはすべて解消したのですが、何も表示されません。
サンプル通りにコーディングしたつもりなのですが、どこが足りないのか自分には見つけることができませんでした。
アドバイスお願い致します。

該当のソースコード

【VAL003Activity.java】

java

public class VAL003Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_val003); // パラメータを取得する Intent intent = getIntent(); int titleCd = intent.getIntExtra("titleCd", 0); // Fragmentを作成する DetailInfoFragment detailInfoFragment = DetailInfoFragment.newInstance(titleCd); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // 新しく追加を行うのでaddを使用する transaction.add(R.id.layout_fragment, detailInfoFragment); // 最後にcommitを使用することで変更を反映する transaction.commit(); } }

【DetailInfoFragment.java】

java

public class DetailInfoFragment extends Fragment { private static final String ARG_titleCd = "titleCd"; private int mTitleCd; DemoCollectionAdapter demoCollectionAdapter; ViewPager2 viewPager; public DetailInfoFragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of * this fragment using the provided parameters. * * @param titleCd タイトルコード. * @return A new instance of fragment DetailInfoFragment. */ public static DetailInfoFragment newInstance(int titleCd) { DetailInfoFragment fragment = new DetailInfoFragment(); Bundle args = new Bundle(); args.putInt(ARG_titleCd, titleCd); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mTitleCd = getArguments().getInt(ARG_titleCd); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_detail_info, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { demoCollectionAdapter = new DemoCollectionAdapter(this); viewPager = view.findViewById(R.id.pager); viewPager.setAdapter(demoCollectionAdapter); // タブを追加する TabLayout tabLayout = view.findViewById(R.id.tab_layout); new TabLayoutMediator(tabLayout, viewPager, new TabLayoutMediator.TabConfigurationStrategy() { @Override public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) { tab.setText("OBJECT " + (position + 1)); } } ).attach(); } public class DemoCollectionAdapter extends FragmentStateAdapter { public DemoCollectionAdapter(Fragment fragment) { super(fragment); } @NonNull @Override public Fragment createFragment(int position) { // Return a NEW fragment instance in createFragment(int) Fragment fragment = new DetailInfoObjectFragment(); Bundle args = new Bundle(); // Our object is just an integer :-P args.putInt(DetailInfoObjectFragment.ARG_OBJECT, position + 1); fragment.setArguments(args); return fragment; } @Override public int getItemCount() { return 100; } } }

【DetailInfoObjectFragment.java】

java

public class DetailInfoObjectFragment extends Fragment { public static final String ARG_OBJECT = "object"; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_detail_info_object, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { Bundle args = getArguments(); ((TextView) view.findViewById(R.id.textView)) .setText(Integer.toString(args.getInt(ARG_OBJECT))); } }

【fragment_detail_info.xml】

xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".fragments.DetailInfoFragment"> <com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" /> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </RelativeLayout>

【fragment_detail_info_object.xml】

xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".fragments.DetailInfoObjectFragment"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </RelativeLayout>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/03/16 16:37

コードのマークダウンにおきまして、ファイル名を書かれている個所には言語名( java や xml )をお書きください。 ファイル名はマークダウンの外にお書きください。
jimbe

2022/03/16 16:55

フラグメントしかご提示されていませんが、アクティビティはどの様になっているでしょうか。
Lily_V

2022/03/18 00:15

マークダウンの書き方修正と、アクティビティのソースコードの追加を行いました。
jimbe

2022/03/18 10:18

ありがとうございます。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。