ボトムナビゲーションアクティビティでフラグメントを変更するにはどうすればいいですか? 質問する

ボトムナビゲーションアクティビティでフラグメントを変更するにはどうすればいいですか? 質問する

「ボトムナビゲーションアクティビティ」を使用して新しいプロジェクトを作成しました。

ここに画像の説明を入力してください

生成されたコードは次のとおりです。

package com.aaron.waller.mrpolitik;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView mTextMessage;

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    mTextMessage.setText(R.string.title_home);
                case R.id.navigation_dashboard:
                    mTextMessage.setText(R.string.title_dashboard);
                case R.id.navigation_notifications:
                    mTextMessage.setText(R.string.title_notifications);
            }
            return true;
        }

    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextMessage = (TextView) findViewById(R.id.message);
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    }

}

ボトム バーで新しいフラグメントに変更するにはどうすればよいですか? たとえば、フラグメント 1、フラグメント 2、フラグメント 3 の 3 つのフラグメントがあり、ボトム バーの 3 つのボタンを使用してこれらに変更したいと考えています。また、指を左右にスワイプしてフラグメントを切り替えられるようにしたいのですが、どうすればよいですか?

ベストアンサー1

私が行う方法は、まずこれに似た 3 つのメソッドを追加します (それぞれ 1 つのフラグメント用です。レイアウト名とフラグメント オブジェクトを、切り替え先の適切なフラグメントに置き換えます)。

public void switchToFragment1() {
    FragmentManager manager = getSupportFragmentManager();
    manager.beginTransaction().replace(R.id.your_fragment_layout_name, new Fragment1()).commit();
}

したがって、switch ステートメントは次のようになります。

        switch (item.getItemId()) {
            case R.id.navigation_home:
                mTextMessage.setText(R.string.title_home);
                switchToFragment1();
                break;

            case R.id.navigation_dashboard:
                mTextMessage.setText(R.string.title_dashboard);                    
                switchToFragment2();
                break;

            case R.id.navigation_notifications:
                mTextMessage.setText(R.string.title_notifications);                     
                switchToFragment3();
                break;
        }

横にスワイプしてフラグメントを切り替えるには、ビューページャ

おすすめ記事