#android #android-fragments #android-viewpager
#Android #android-фрагменты #android-viewpager
Вопрос:
Проблема
У меня есть ViewPager
с 3 fragments
. В одном из fragments
у меня есть 2 Buttons
, которые я setVisibility
хочу VISIBLE
. Здесь отображаются две кнопки. Проблема в том, что когда я провожу пальцем по другой странице, а затем возвращаюсь на страницу с кнопками, кнопки исчезают на долю секунды, а затем появляются снова.
Я не могу разобраться в этом, я бы хотел, чтобы кнопки отображались постоянно. Если это что-нибудь значит, у меня есть кнопки, нарисованные в XML-файле layout, для видимости которых установлено значение GONE
. Если есть лучший способ сделать это, пожалуйста, дайте мне знать. Спасибо!
Фрагмент в коде вопроса
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_recycler, container, false);
/* Removed unnecessary code */
// If this is the Negative fragment then add the buttons
if(VIEW_TYPE == Constants.TYPE_NEGATIVE) {
LinearLayout buttonsLayout = view.findViewById(R.id.ButtonsLayout);
buttonsLayout.setVisibility(View.VISIBLE);
Button addButton = view.findViewById(R.id.addThought);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNewThought();
}
});
Button remButton = view.findViewById(R.id.delThought);
remButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteLastThought();
}
});
}
Код ViewPager
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
Set up the ViewPager. Finds its view, sets up the adapter (which sets up the associated
pages), sets up the necessary settings for it to work appropriately, and sets up its
page ticker
*/
// Find the ViewPagers and TabLayouts view
mViewPager = findViewById(R.id.ViewPager);
TabLayout tabLayout = findViewById(R.id.tabDots);
// Define the ViewPagers adapter
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
// Keeping all tabs in memory to prevent refreshing view. ABSOLUTELY NEEDED
mViewPager.setOffscreenPageLimit(ViewPagerAdapter.NUM_OF_TABS); // Equal to 3
// Set ViewPagers adapter
mViewPager.setAdapter(mViewPagerAdapter);
// Set up TabLayout with View Pager
tabLayout.setupWithViewPager(mViewPager, true);
}
Ответ №1:
Удалите видимость из xml-макета и в коде сделайте, как показано ниже:
Отредактировано
if(VIEW_TYPE == Constants.TYPE_NEGATIVE) {
LinearLayout buttonsLayout = view.findViewById(R.id.ButtonsLayout);
buttonsLayout.setVisibility(View.VISIBLE);}else{
buttonLayout.setVisibility(View.GONE);}
Комментарии:
1. Спасибо, я протестирую это, когда вернусь домой. Но это делает прямо противоположное тому, что я делаю. Не означает ли это, что у других моих фрагментов будет момент, когда они появятся, а затем исчезнут?