Открытая активность из мгновенно закрытого фрагмента - PullRequest
0 голосов
/ 16 октября 2019

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

public class GalleryFragment extends Fragment {

    private GalleryViewModel galleryViewModel;
    Intent intent;


    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {


        View rootView = inflater.inflate(R.layout.fragment_gallery, container, false);
        intent = new Intent(GalleryFragment.this.getActivity(), HomeFragment.class);
        final Button btn = (Button) rootView.findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(intent);
            }
        });

        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(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable String s) {
                textView.setText(s);
            }
        });
        return root;
    }

}

1 Ответ

0 голосов
/ 16 октября 2019

Я предполагаю из этой строки:

intent = new Intent(GalleryFragment.this.getActivity(), HomeFragment.class);

что вы пытаетесь запустить Fragment, а не Activity. Чтобы перейти на другой Fragment, замените ваш Intent на:

 btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        getFragmentManager()
            .beginTransaction()
            .replace(...) //Or add, depends on your use case
            .commit();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...