Android - TabLayout行为不清楚

时间:2016-03-15 09:56:59

标签: android android-layout android-tablayout

我通过TabLayout& amp;创建了两个标签布局。 ViewPager,但是当我在标签之间转换时,似乎我总是在查看TAB1的布局而不是转换到TAB2。我可以看到这一点,因为TAB1的布局中有一个Spinner,而TAB2没有。

你可以看到我在 onTabSelected 中添加了Log.w条目,但是我从未看到输出,这强调了我没有真正在标签之间转换的假设,布局永远不会改变。

我的配置有什么不正确?

这是代码: 主要活动onCreate

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    dbM = DBManager.getInstance(context);
    TaskHashList.Initialize();

    itemListAllTasks = dbM.getAllTasks();
    TaskHashList.addTaskList(itemListAllTasks);

    itemListWaitingTasks = dbM.getSortedTasks(Sorting.fromInteger(Sorting.WAITING.ordinal()));
    TaskHashList.addTaskList(itemListWaitingTasks);

    tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setText("All Tasks"));
    tabLayout.addTab(tabLayout.newTab().setText("Waiting"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    final PageAdapter adapter = new PageAdapter
            (getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            Log.w("changed tab", "");
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
    adapter.notifyDataSetChanged();
}

我的PageAdapter

public class PageAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PageAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {
    Fragment fragment;
   switch (position) {
        case 0:
            fragment = new AllTasksTabFragment();
        case 1:
            fragment = new WaitingTasksTabFragment();
        default:
            fragment = new AllTasksTabFragment();
    }
    Bundle bundle = new Bundle();
    bundle.putInt("position",position);
    fragment.setArguments(bundle);
    return fragment;
}

@Override
public int getCount() {
    return mNumOfTabs;
}
}

TAB1布局 - 所有任务

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:id="@+id/Main2ActivitylinearLayout3">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="right"
        android:paddingRight="10dp"
        android:text=""
        android:id="@+id/allt_tab_totalTask"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:id="@+id/Main2ActivitylinearLayout">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:paddingLeft="5dp"
        android:paddingRight="8dp"
        android:text="Sort:"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Spinner android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:entries="@array/sort_array"
        android:id="@+id/all_tasks_sortSpinner"
        android:gravity="center"
        android:textAlignment="center"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:id="@+id/Main2ActivitylinearLayout2">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="No Tasks to Display"
        android:layout_marginTop="60dp"
        android:layout_marginLeft="60dp"
        android:id="@+id/alltab_emptylist"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:textStyle="bold" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/alltasks_listView"
        android:layout_centerHorizontal="true" />
</LinearLayout>

TAB2布局 - 等待任务

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:id="@+id/Main2ActivitylinearLayout1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="right"
        android:paddingRight="10dp"
        android:text=""
        android:id="@+id/waitt_tab_totalTask"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:id="@+id/Main2ActivitylinearLayout2">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="No Tasks to Display"
        android:gravity="center"
        android:layout_marginTop="60dp"
        android:layout_marginLeft="60dp"
        android:id="@+id/wait_tabemptylist"
        android:layout_centerHorizontal="true"
        android:textStyle="bold" />

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/waitingtasks_listView"
        android:layout_centerHorizontal="true" />
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

你的开关盒没有中断。

@Override
public Fragment getItem(int position) {
    Fragment fragment;
   switch (position) {
        case 0:
            fragment = new AllTasksTabFragment();
            break;   // Add this
        case 1:
            fragment = new WaitingTasksTabFragment();
            break;   // Add this
        default:
            fragment = new AllTasksTabFragment();
    }
    Bundle bundle = new Bundle();
    bundle.putInt("position",position);
    fragment.setArguments(bundle);
    return fragment;
}


但我不能假设为什么你的Log.w不起作用 也许您正在设置日志过滤器以仅显示错误...