Переход от фрагмента к активности с помощью кнопки. Android Студия - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь реализовать следующий код в Android Studio, и он не работает. Я хочу перейти от фрагмента (GalleryFragment) к деятельности (постропа) с помощью кнопки. Я связал боттон с функцией (BotonPulsado) и не знаю, что не так (в режиме конструктора).

Представление дизайна

Код:

import (...)

public class GalleryFragment extends Fragment {

    private GalleryViewModel galleryViewModel;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        galleryViewModel =
                ViewModelProviders.of(this).get(GalleryViewModel.class);
        View root = inflater.inflate(R.layout.fragment_gallery, container, false);
        final TextView textView = root.findViewById(R.id.text_gallery);
        galleryViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        return root;
    }

    public void BotonPulsado(View view) {
        Intent intent = new Intent(getContext(), postropa.class);
        startActivity(intent);
    }
}

1 Ответ

0 голосов
/ 04 мая 2020

Вы должны создать Button переменную как поле класса.

private GalleryViewModel galleryViewModel;
Button button; <<-------

После этого вам нужно определить его в методе onCreateView()

 button = (Button) findViewById(R.id.button2);

И установить onClickListener() на эту кнопку для обработки звонка. Там вы должны вызвать метод, который запускает действие.

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            BotonPulsado();
        }
    });

Ваш окончательный код:

import (...)

public class GalleryFragment extends Fragment {

    private GalleryViewModel galleryViewModel;
    Button button;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        galleryViewModel =
                ViewModelProviders.of(this).get(GalleryViewModel.class);
        View root = inflater.inflate(R.layout.fragment_gallery, container, false);
        final TextView textView = root.findViewById(R.id.text_gallery);
        galleryViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        button = (Button) findViewById(R.id.button2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                BotonPulsado();
            }
        });
        return root;
    }

    public void BotonPulsado() {
        Intent intent = new Intent(getContext(), postropa.class);
        startActivity(intent);
    }
}
...