Изменить фрагмент с помощью кнопки на фрагменте - PullRequest
0 голосов
/ 23 сентября 2019

Я создал простое приложение, в котором есть Навигационный ящик с Элементами, который при выборе изменяет отображаемый фрагмент.Это работает без проблем, каждый элемент в навигаторе загружает фрагмент в фрейм контента.

Я добавил несколько кнопок к одному из фрагментов (позже я добавлю некоторые к другим фрагментам), но я не могу понять, где или как прослушать нажатие кнопки, а затем как ее обработать.это изменить существующий фрагмент.

Я пытался добавить код в MainaActivity и Fragment, но он не работает.

Пример класса фрагмента

public class info extends Fragment {



    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //returning our layout file
        //change R.layout.fragment for each of your fragments
        return inflater.inflate(R.layout.fragment_info, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        //you can set the title for your toolbar here for different fragments different titles
        getActivity().setTitle("Info");
    }



}

Вот мой код, который обрабатывает исходные фрагменты

    private void displaySelectedScreen(int itemId) {

        //creating fragment object
        Fragment fragment = null;

        //initializing the fragment object which is selected
        switch (itemId) {
            case R.id.nav_atoz:
                fragment = new atoz();
                break;
            case R.id.nav_colour:
                fragment = new colour();
                break;
            case R.id.nav_type:
                fragment = new type();
                break;
            case R.id.nav_info:
                fragment = new info();
                break;



        }

        //replacing the fragment
        if (fragment != null) {

            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame, fragment).addToBackStack("tag");
            ft.commit();
                    }


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }

что я делаю неправильно?какие-либо предложения?я могу использовать Предметы на фрагменте, оформленном как кнопки, и вызывать их из оригинального оператора MainActivity Case?

1 Ответ

0 голосов
/ 24 сентября 2019

Вы должны создать прослушиватель щелчков внутри фрагмента, который содержит кнопку:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Store the inflated layout
    View root = inflater.inflate(R.layout.my_fragment_layout, container, false);

    // Get a reference to the button using the layout
    Button myButton = root.findViewById(R.id.my_button);

    // Set the click listener
    myButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Perform the fragment transaction
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                .replace(R.id.content_container, new MyFragment(), "My_Fragment_Tag")
                .commit();
        }
    });

    return root; // Return the inflated layout
}
...