如何正确地将我的活动放在Tutorial的底部导航中?

时间:2018-11-10 20:49:48

标签: android bottomnavigationview

我是编程新手。我有4种xml布局的4种工作活动。我还从一个教程中复制了这个简单的示例片段(我认为我需要4个活动中的4个片段):

public class SelectFriends extends Fragment {


    public SelectFriends () {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_SelectFriends , container, false);
    }

}

这是MainActivity的相关部分:

 @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()){
            case R.id.navigation_item1:
                getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.fade_in, R.anim.fade_out).replace(R.id.container, SelectFriends).commit();
                return true;

            case R.id.navigation_item2:
                getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.fade_in, R.anim.fade_out).replace(R.id.container, StartFood).commit();
                return true;
[...]

        }
        return false;
    }

当我将@Override public View onCreateView中的fragment_SelectFriends替换为selectFriends.xml的ID时,就可以启动activitie的selectFriends.xml了。问题是我不知道将相应的Activity放在哪里,因此selectFriends.xml可以正确显示在BottomNavigation中,但是当然不可能进行交互。什么是最佳做法?互联网使我感到困惑:我是否理解错误使用片段的情况?当我想在不同的BottomNavigation显示中显示的内容彼此完全不同时,我什至不明白为什么我应该使用BottomNavigation制作片段。谢谢

1 个答案:

答案 0 :(得分:0)

让我们从您的问题开始吧:

  

如何正确地将我的活动放在“教程的底部导航”中?

您将不会在底部导航中放置活动。

您将有一个Activity,它将绘制屏幕的布局。其次,您将有多个Fragment,它们代表屏幕的某些部分。

有多少Fragment个?与“底部导航”的选项一样多。 以 Youtube应用为例。

整个屏幕是Activity(Youtube的MainActivity)。您可以在底部导航中看到用户按下的订阅 ,因此MainActivity调用了SubscriptionsFragment来绘制屏幕的订阅部分(除顶部是ActionBar,底部是底部导航。

如果用户在底部导航中选择“主页”,则MainActivity将用SubscriptionsFragment的布局替换HomeFragment绘制其布局的屏幕部分。而YouTube底部导航栏的其他选项也会发生同样的事情。

因此请澄清。这里仅有一项活动MainActivity不是四个。此活动命令4个片段来绘制其屏幕的4个主要部分(首页部分为HomeFragment,趋势部分为TrendingFragment,订阅部分为SubscriptionFragment,最后是图书馆部分为LibraryFragment

您最近的评论:

  

我必须将上面发布的两段代码放在一起   上课?

不,您不必。不必创建一个文件,例如MainActivity.java(定义了MainActivity的文件),然后在同一文件中定义Fragment的类。

您想使用底部导航显示4个屏幕,对吗?为您的活动创建一个文件,并创建四个单独的文件,每个Fragment一个。

示例:

您的第一个文件SelectFriends.java,其中定义了SelectFriends片段,如您上面所述。

public class SelectFriends extends Fragment {


    public SelectFriends () {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_SelectFriends , container, false);
    }

}

另外三个类似的文件,每个片段一个。

最后,正如您上面所述,再次进行您的活动。

public class MainActivity extends AppCompatActivity{

    @Override
    public void onCreate(Bundle savedInstanceState){
      // ... some code here
    }

    @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            switch (item.getItemId()){
                case R.id.navigation_item1:
                    ..
                // Here the activity figured out that the first item of the bottom navigation
                // was clicked, so it calls the support fragment manager to display a fragment
                // inside the container view
                    getSupportFragmentManager().beginTransaction()
                    .setCustomAnimations(R.anim.fade_in, R.anim.fade_out)
                    .replace(R.id.container, SelectFriends).commit();
                    return true;

                case R.id.navigation_item2:
                    getSupportFragmentManager().beginTransaction()
                    .setCustomAnimations(R.anim.fade_in, R.anim.fade_out)
                    .replace(R.id.container, StartFood).commit();
                    return true;
            }
            return false;
        }
    } 

编辑:阅读Ultimate Guide to Bottom Navigation on Android