java - 如何使用底部导航 Activity 更改 fragment ?

标签 java android android-fragments android-activity

我用“底部导航 Activity ”创建了一个新项目:

enter image description here

这是生成的代码:

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);
    }

}

如何使用底部栏更改为新的 fragment ? 例如,我有 3 个 fragment : fragment 1 fragment 2 和 fragment 3 我想用底部栏中的 3 个按钮更改它们。 另外我希望我可以通过左右滑动手指来切换 fragment 我该怎么做?

最佳答案

我的做法是,我首先添加三个与此类似的方法(每个方法用于单个 fragment 。将布局名称和 fragment 对象替换为正在切换到的相应 fragment ):

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;
        }

至于通过向两侧滑动来切换 fragment ,我相信你需要一个ViewPager .

关于java - 如何使用底部导航 Activity 更改 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43104485/

相关文章:

指向原始值的 Java 包装类引用

java - 如何以整数形式从计时器中获取耗时

android - 为什么我的 fragment onSaveInstanceState() 没有被调用?

java - 在 BottomNavigationView 中切换选项卡时出现滞后

android - 多次播放 WAV 文件

android - 有什么方法可以检测 Android fragment 中的 userInterations 吗?

java - 如何使用 OSGi 标准功能以编程方式在 SCR 中注册服务?

java - 如何使用 Java 从 CIDR 表示法或地址网络掩码对中获取 IP 范围

java - Pentaho 数据源向导

android - Flutter 用户应该运行 'flutter pub get' 而不是 'pub get'