Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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 单击选项卡布局项时,选项卡未更改_Java_Android - Fatal编程技术网

Java 单击选项卡布局项时,选项卡未更改

Java 单击选项卡布局项时,选项卡未更改,java,android,Java,Android,单击选项卡布局(选项卡按钮)时,碎片(选项卡)不会更改 我尝试了以下代码 MainActivity.java package com.kunal.flightstatus; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.ViewPager; import android.net.Uri; import android.os.Bundle; import com.google

单击选项卡布局(选项卡按钮)时,碎片(选项卡)不会更改

我尝试了以下代码

MainActivity.java

package com.kunal.flightstatus;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import android.net.Uri;
import android.os.Bundle;

import com.google.android.material.tabs.TabLayout;

public class MainActivity extends AppCompatActivity {

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

        TabLayout tabLayout = findViewById(R.id.tablayout);
        tabLayout.addTab(tabLayout.newTab().setText("Home"));
        tabLayout.addTab(tabLayout.newTab().setText("Favourite"));
        tabLayout.addTab(tabLayout.newTab().setText("Search"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        final ViewPager viewPager = findViewById(R.id.viewpager);
        PageAdapter adapter = new PageAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);

    }

}
PagerAdapter.java

package com.kunal.flightstatus;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;


public class PageAdapter extends FragmentPagerAdapter {


    public PageAdapter(@NonNull FragmentManager fm) {
        super(fm);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0 :
                Tab1 tab1 = new Tab1();
                position +=1;
                Bundle bundle = new Bundle();
                bundle.putString("message","fragment :"+position);
                tab1.setArguments(bundle);
                return tab1;
            case 1 :
                Tab2 tab2 = new Tab2();
                position +=1;
                Bundle bundl = new Bundle();
                bundl.putString("message","fragment :"+position);
                tab2.setArguments(bundl);
                return tab2;
            case 2 :
                Tab3 tab3 = new Tab3();
                position +=1;
                Bundle bundlee = new Bundle();
                bundlee.putString("message","fragment :"+position);
                tab3.setArguments(bundlee);
                return tab3;
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return 3;
    }
}
activity_main.xml

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

    <com.google.android.material.tabs.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tablayout"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    </com.google.android.material.tabs.TabLayout>

    <androidx.viewpager.widget.ViewPager
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:id="@+id/viewpager">

    </androidx.viewpager.widget.ViewPager>

</LinearLayout>


单击选项卡布局项时,应更改选项卡(片段)

ViewPager,需要链接选项卡布局以切换到工作状态

tabLayout.setupWithViewPager(viewPager);
我们应该做到这一点

这样,
TabLayout
将连接到
ViewPager
并自动填充。在
FragmentPagerAdapter
中执行
CharSequence getPageTitle(int位置)
以填充标题,而不是手动调用
tabLayout.addTab()

@NonNull
private List<String> titles = Arrays.asList("Home", "Favourite", "Search");

@Override
public CharSequence getPageTitle (int position) {
    return titles.get(position);
}
PagerAdapter:

package com.kunal.flightstatus;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

import java.util.Arrays;
import java.util.List;


public class PageAdapter extends FragmentPagerAdapter {
    @NonNull
    private List<String> titles = Arrays.asList("Home", "Favourite", "Search");

    public PageAdapter(@NonNull FragmentManager fm) {
        super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
    }

    @Override
    public CharSequence getPageTitle (int position) {
        return titles.get(position);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0 :
                Tab1 tab1 = new Tab1();
                position +=1;
                Bundle bundle = new Bundle();
                bundle.putString("message","fragment :"+position);
                tab1.setArguments(bundle);
                return tab1;
            case 1 :
                Tab2 tab2 = new Tab2();
                position +=1;
                Bundle bundl = new Bundle();
                bundl.putString("message","fragment :"+position);
                tab2.setArguments(bundl);
                return tab2;
            case 2 :
                Tab3 tab3 = new Tab3();
                position +=1;
                Bundle bundlee = new Bundle();
                bundlee.putString("message","fragment :"+position);
                tab3.setArguments(bundlee);
                return tab3;
            default:
                throw new IllegalStateException();
        }
    }

    @Override
    public int getCount() {
        return 3;
    }
}
package com.kunal.flightstatus;
导入android.os.Bundle;
导入androidx.annotation.NonNull;
导入androidx.fragment.app.fragment;
导入androidx.fragment.app.FragmentManager;
导入androidx.fragment.app.FragmentPagerAdapter;
导入java.util.array;
导入java.util.List;
公共类PageAdapter扩展了FragmentPagerAdapter{
@非空
私有列表标题=array.asList(“主页”、“收藏夹”、“搜索”);
公共页面适配器(@NonNull FragmentManager fm){
超级(fm,行为\恢复\仅\当前\片段);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题。获取(位置);
}
@非空
@凌驾
公共片段getItem(int位置){
开关(位置){
案例0:
Tab1 Tab1=新Tab1();
位置+=1;
Bundle=新Bundle();
bundle.putString(“消息”,“片段:+位置”);
表1.setArguments(bundle);
返回表1;
案例1:
Tab2 Tab2=新Tab2();
位置+=1;
Bundle Bundle=新Bundle();
bundle.putString(“消息”,“片段:+位置”);
表2.设置参数(捆绑);
返回表2;
案例2:
Tab3 Tab3=新Tab3();
位置+=1;
Bundle bundlee=新Bundle();
bundlee.putString(“消息”,“片段:+位置”);
表3.设置参数(bundlee);
返回表3;
违约:
抛出新的非法状态异常();
}
}
@凌驾
public int getCount(){
返回3;
}
}

super(fm)已删除固定。xml中还有
android:orientation=“horizontal”
,这也阻止了ViewPager本身显示我在这里修复的问题。
package com.kunal.flightstatus;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;

import com.google.android.material.tabs.TabLayout;

public class MainActivity extends AppCompatActivity {

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

        final ViewPager viewPager = findViewById(R.id.viewpager);
        PageAdapter adapter = new PageAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);

        TabLayout tabLayout = findViewById(R.id.tablayout);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        tabLayout.setupWithViewPager(viewPager);
    }

}
package com.kunal.flightstatus;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

import java.util.Arrays;
import java.util.List;


public class PageAdapter extends FragmentPagerAdapter {
    @NonNull
    private List<String> titles = Arrays.asList("Home", "Favourite", "Search");

    public PageAdapter(@NonNull FragmentManager fm) {
        super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
    }

    @Override
    public CharSequence getPageTitle (int position) {
        return titles.get(position);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0 :
                Tab1 tab1 = new Tab1();
                position +=1;
                Bundle bundle = new Bundle();
                bundle.putString("message","fragment :"+position);
                tab1.setArguments(bundle);
                return tab1;
            case 1 :
                Tab2 tab2 = new Tab2();
                position +=1;
                Bundle bundl = new Bundle();
                bundl.putString("message","fragment :"+position);
                tab2.setArguments(bundl);
                return tab2;
            case 2 :
                Tab3 tab3 = new Tab3();
                position +=1;
                Bundle bundlee = new Bundle();
                bundlee.putString("message","fragment :"+position);
                tab3.setArguments(bundlee);
                return tab3;
            default:
                throw new IllegalStateException();
        }
    }

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