как скрыть "потрясающую" кнопку для определенного фрагмента активности? - PullRequest
0 голосов
/ 07 июня 2019

Как скрыть "потрясающую" кнопку, когда нажали или открыли определенный фрагмент?

Я хочу скрыть от нижеприведенного фрагмента

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View newExchange= inflater.inflate(R.layout.new_exchange,container,false);


        recyclerView=newExchange.findViewById(R.id.step1recycleView);
        datalist=new ArrayList<>();
        exchangeAdapter=new NewExchangeAdapter(datalist,getContext());
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(exchangeAdapter);
        loadData();

        FloatingActionButton fab =newExchange.findViewById(R.id.fab);
        fab.setVisibility(View.INVISIBLE);//this is generating error on setVisibility

        return newExchange;




    }

Здесь я устанавливаю потрясающую кнопку при нажатии

fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                 //       .setAction("Action", null).show();

                fragment=new NewExchangeFrag();
                getSupportFragmentManager().beginTransaction().replace(R.id.frame,fragment).commit();
                fab.setVisibility(view.INVISIBLE);//This way also generating error on setVisibility

Также я пытался использовать fab.hide();, и это приводит к сбою моего приложения

Что является правильным способом?

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Вы должны установить атрибут видимости для кнопки с плавающим действием в xml-файле NewExchangeFragment, если хотите, чтобы он был скрыт при надувании фрагмента.

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:visibility="gone"
    app:srcCompat="@android:drawable/ic_dialog_email" />

Что касается сокрытия кнопки при нажатии, перед вызовом нового фрагмента следует вызвать метод setVisibility

fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            view.setVisibility(View.INVISIBLE);
            fragment = new NewExchangeFrag();
            getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment).commit();
        }
    });
0 голосов
/ 07 июня 2019

Вы получаете ошибку, потому что пытаетесь получить доступ к фабрике, но после того, как заменили фрагмент.Я не понимаю, почему пытаются скрыть кнопку после удаления фрагмента.Кнопка больше не существует.

Попробуйте

fab.setVisibility(view.INVISIBLE)

до

fragment=new NewExchangeFrag().

На самом деле вам даже не нужно прятать кнопку.

...