Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有TabLayout和ViewPager的片段_Java_Android_Android Fragments - Fatal编程技术网

Java 带有TabLayout和ViewPager的片段

Java 带有TabLayout和ViewPager的片段,java,android,android-fragments,Java,Android,Android Fragments,目前,我有两个选项卡(两个片段)的MainActivity和三项菜单的导航视图。 我现在只有一个带标签的活动。在MainActivity中,我初始化了工具栏、NavigationView、ViewPager和TableLayout。这里还有一个适配器实例,它为选项卡创建片段 当我选择菜单项中的一个时,我希望它打开一个带有两个其他选项卡(带有两个其他片段)的新片段 如何用碎片实现它? 或者更好地使用额外的活动 活动\u主\u xml: 语音表片段适配器 package ru.alexb

目前,我有两个选项卡(两个片段)的MainActivity和三项菜单的导航视图。 我现在只有一个带标签的活动。在MainActivity中,我初始化了工具栏、NavigationView、ViewPager和TableLayout。这里还有一个适配器实例,它为选项卡创建片段

当我选择菜单项中的一个时,我希望它打开一个带有两个其他选项卡(带有两个其他片段)的新片段

如何用碎片实现它? 或者更好地使用额外的活动

活动\u主\u xml:

语音表片段适配器

   package ru.alexbykov.sailesstat.statistic.adapter;

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.HashMap;
import java.util.Map;

import ru.alexbykov.sailesstat.statistic.fragments.AbstractTabFragment;
import ru.alexbykov.sailesstat.statistic.fragments.fragmentsTheSale.ManagersFragment;
import ru.alexbykov.sailesstat.statistic.fragments.fragmentsTheSale.PlanFragment;

/**
 * Created by Alexey on 09.06.2016.
 */
public class TheSalesTabsFragmentAdapter extends FragmentPagerAdapter {




    //for use strings
    private Context context;
    private Map<Integer, AbstractTabFragment> tabs;



    public TheSalesTabsFragmentAdapter(Context context, FragmentManager fm) {
        super(fm);

        this.context = context;
        initTabs();
    }

    @Override
    public Fragment getItem(int position) {
        return tabs.get(position);
    }

    @Override
    public int getCount() {
        return tabs.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {

        return tabs.get(position).getTitle();
    }

    private void initTabs() {

        tabs = new HashMap<>();

            tabs.put(0, PlanFragment.getInstance(context));
            tabs.put(1, ManagersFragment.getInstance(context));

    }
}
PlanFragment

package ru.alexbykov.sailesstat.statistic.fragments;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.view.View;

public class AbstractTabFragment extends Fragment {


    private String title;
    protected Context context;
    protected View view;


    public void setTitle(String title) {
        this.title = title;
    }

    public void setContext(Context context) {

        this.context=context;

    }

    public String getTitle() {
        return title;
    }
}
package ru.alexbykov.sailesstat.statistic.fragments.fragmentsTheSale;


import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import ru.alexbykov.sailesstat.R;
import ru.alexbykov.sailesstat.statistic.fragments.AbstractTabFragment;

/**
 * A simple {@link Fragment} subclass.
 */
public class PlanFragment extends AbstractTabFragment {

    private static final int LAYOUT = R.layout.fragment_plan;





    public static PlanFragment getInstance(Context context) {


/*        Bundle bundle = new Bundle();
        fragment.setArguments(bundle);*/


        PlanFragment fragment = new PlanFragment();
        fragment.setContext(context);
        fragment.setTitle(context.getString(R.string.tab_plan_stat_fragment));

        return fragment;


    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        view = inflater.inflate(LAYOUT, container, false);
        return view;
    }








}
package ru.alexbykov.sailesstat.statistic.fragments;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.view.View;

public class AbstractTabFragment extends Fragment {


    private String title;
    protected Context context;
    protected View view;


    public void setTitle(String title) {
        this.title = title;
    }

    public void setContext(Context context) {

        this.context=context;

    }

    public String getTitle() {
        return title;
    }
}
AbstractTabFragment

package ru.alexbykov.sailesstat.statistic.fragments;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.view.View;

public class AbstractTabFragment extends Fragment {


    private String title;
    protected Context context;
    protected View view;


    public void setTitle(String title) {
        this.title = title;
    }

    public void setContext(Context context) {

        this.context=context;

    }

    public String getTitle() {
        return title;
    }
}
package ru.alexbykov.sailesstat.statistic.fragments.fragmentsTheSale;


import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import ru.alexbykov.sailesstat.R;
import ru.alexbykov.sailesstat.statistic.fragments.AbstractTabFragment;

/**
 * A simple {@link Fragment} subclass.
 */
public class PlanFragment extends AbstractTabFragment {

    private static final int LAYOUT = R.layout.fragment_plan;





    public static PlanFragment getInstance(Context context) {


/*        Bundle bundle = new Bundle();
        fragment.setArguments(bundle);*/


        PlanFragment fragment = new PlanFragment();
        fragment.setContext(context);
        fragment.setTitle(context.getString(R.string.tab_plan_stat_fragment));

        return fragment;


    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        view = inflater.inflate(LAYOUT, container, false);
        return view;
    }








}
package ru.alexbykov.sailesstat.statistic.fragments;


import android.content.Context;
import android.support.v4.app.Fragment;
import android.view.View;

public class AbstractTabFragment extends Fragment {


    private String title;
    protected Context context;
    protected View view;


    public void setTitle(String title) {
        this.title = title;
    }

    public void setContext(Context context) {

        this.context=context;

    }

    public String getTitle() {
        return title;
    }
}

与NavigationView一样,先发片段并不是最佳实践。我建议使用按钮切换活动,完全不使用片段。如果我没弄错的话,你的主页上有内容,我会在其中添加三个按钮,每个按钮都是为了在NavigationView的leiu中启动另一个活动。这些活动中的每一个都有自己的按钮,这些按钮将引导您进入您想从那里进入的任何活动。

首先进入的片段并不像NavigationView那样是最佳实践。我建议使用按钮切换活动,完全不使用片段。如果我没弄错的话,你的主页上有内容,我会在其中添加三个按钮,每个按钮都是为了在NavigationView的leiu中启动另一个活动。这些活动中的每一项都有自己的按钮,这些按钮将引导您进入任何您想从那里进入的活动。

我有一个包含内容的主页(图2)。此页面是在应用程序启动时创建的。为什么使用片段和NavigationView不是一个好的实践?是的,这些都是好的,这就是你要从中启动其他活动的地方。片段通常仅在您为手机和平板电脑定制应用程序时使用。在手机上,它们是全屏的,而在平板电脑上,它们显示为屏幕空间的分割(想想苹果的设置页面)。一般来说,他们更难相处,所以人们普遍认为,拥有他们是毫无意义的。NavigationViews被视为一种懒惰的编程实践,因为它很容易将一堆选项粘在其中,并迷惑用户(老Spotify就是这样,他们最终切换了),感谢您的回答。但无论如何,我这样做是为了学习。我想了解如何通过在一个片段中使用选项卡和片段来实现这一点。(由用户在导航菜单中选择)这是值得称赞的。如果您使用意图来更改活动,那么本质上它是一个类似的操作,但是您将使用一个名为replace的方法。下面是FragmentTransaction类的文档,其中包括:我有一个包含内容的主页(图2)。此页面是在应用程序启动时创建的。为什么使用片段和NavigationView不是一个好的实践?是的,这些都是好的,这就是你要从中启动其他活动的地方。片段通常仅在您为手机和平板电脑定制应用程序时使用。在手机上,它们是全屏的,而在平板电脑上,它们显示为屏幕空间的分割(想想苹果的设置页面)。一般来说,他们更难相处,所以人们普遍认为,拥有他们是毫无意义的。NavigationViews被视为一种懒惰的编程实践,因为它很容易将一堆选项粘在其中,并迷惑用户(老Spotify就是这样,他们最终切换了),感谢您的回答。但无论如何,我这样做是为了学习。我想了解如何通过在一个片段中使用选项卡和片段来实现这一点。(由用户在导航菜单中选择)这是值得称赞的。如果您使用意图来更改活动,那么本质上它是一个类似的操作,但是您将使用一个名为replace的方法。以下是FragmentTransaction类的文档,其中包括: