android-fragments - 为什么我的浮动操作按钮在 ViewPager 中不能正常工作?
问题描述
我在我的应用程序中设置了一个 ViewPager,并尝试设置两个浮动操作按钮,一个左一个和一个右一个,以执行与 ViewPager 相同的操作,以便用户在导航方面有选择权。我正在尝试将其设置为左按钮在第一页上不可见,而右按钮在最后一页上不可见,但按钮的外观似乎是零星的。我已经尝试调试应用程序,并且在测试每种情况后,都会执行相应的代码,所以我无法理解为什么会发生这种行为。任何帮助,将不胜感激。
测试片段:
public class TestFragment extends Fragment {
public static final String ARG_ID = "Id";
private int Id;
private String title;
private TextView titleTV;
private String description;
private TextView descriptionTV;
private int number;
private TextView numberTV;
private FloatingActionButton leftBtn;
private FloatingActionButton rightBtn;
public static TestFragment newInstance(int Id) {
Bundle args = new Bundle();
args.putSerializable(ARG_ID, Id);
TestFragment fragment = new TestFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_test, container, false);
Id = getArguments().getInt(ARG_ID);
title = Test.testData[Id].getTitle();
description = Test.testData[Id].getDescription();
number = Test.testData[Id].getNumber();
titleTV = view.findViewById(R.id.title);
titleTV.setText(title);
descriptionTV = view.findViewById(R.id.description);
descriptionTV.setText(description);
numberTV = view.findViewById(R.id.number);
numberTV.setText(String.valueOf(number));
leftBtn = view.findViewById(R.id.left_btn);
rightBtn = view.findViewById(R.id.right_btn);
toggleButtons();
leftBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
testViewPager.setCurrentItem(--index);
toggleButtons();
}
});
rightBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
testViewPager.setCurrentItem(++index);
toggleButtons();
}
});
return view;
}
public void toggleButtons() {
if(index == 0) {
leftBtn.setVisibility(View.INVISIBLE);
}
else if(index == Test.testData.length - 1) {
rightBtn.setVisibility(View.INVISIBLE);
}
else {
leftBtn.setVisibility(View.VISIBLE);
rightBtn.setVisibility(View.VISIBLE);
}
}
}
TestPagerActivity:
public class TestPagerActivity extends AppCompatActivity {
public static int index;
public static ViewPager testViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_pager);
index = (int) getIntent().getSerializableExtra(EXTRA_ID);
testViewPager = findViewById(R.id.test_view_pager);
FragmentManager fragmentManager = getSupportFragmentManager();
testViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
@Override
public Fragment getItem(int position) {
return TestFragment.newInstance(position);
}
@Override
public int getCount() {
return Test.testData.length;
}
});
for(int i = 0; i < Test.testData.length; i++) {
if(i == index) {
testViewPager.setCurrentItem(i);
break;
}
}
}
}
解决方案
推荐阅读
- java - 手机位置上的 Android 组件与 android studio 上的不匹配
- python - 顺序运行scrapy spider时无法抓取
- sql - 如果一个值存在,则选择记录,否则另一个
- r - 开销内存消耗的可能来源(R,data.table)
- java - java:找不到符号符号:类getLogger位置:类org.slf4j.LoggerFactory
- mysql - MySQL 加入 WHERE IN 并结合 NOT IN(类别)
- python-3.x - Python 3.x 到 Productivity 2000 PLC 通信
- php - 创建 HTML 正文后不接收电子邮件
- amazon-sagemaker - 如何使用 sagemaker java API 调用端点?
- javascript - 文件夹级脚本引用文档级脚本