Переход от действия к фрагменту в Android studio

#android #android-fragments

#Android #android-фрагменты

Вопрос:

Я использую новичка в разработке Android Studio. Я пытаюсь изменить свой код activity на фрагмент кода. Однако до сих пор мне это удавалось, я обнаружил трудность в этом фрагменте кода:

 public void logout(){

        editor.clear();
        editor.commit();
        Intent i = new Intent(context, LoginActivity.class);
        context.startActivity(i);
        ((HomeActivity) context).finish();
    }
  

По сути, я хочу изменить HomeActivity фрагмент, который находится в моем MainActivity, и я попытался заменить HomeActivity на getActivity() , но он помечает его как недопустимый, поскольку этот java-файл находится не во фрагменте, а в отдельном java-файле

Фрагмент кода:

 public class AccountFragment extends Fragment {

private static final String TAG = MainActivity.class.getSimpleName();//getting the info
private TextView name, email;
private Button btn_logout;

SessionManager sessionManager;
String getId;
private static String URL_READ = "http://192.168.1.123:81/android_register_login/read_detail.php";
private static String URL_EDIT = "http://192.168.1.123:81/android_register_login/edit_detail.php";

private Menu action;

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

    sessionManager = new SessionManager(getActivity());
    sessionManager.checkLogin();

    Button btn_logout = (Button) view.findViewById(R.id.btn_logout);
    btn_logout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sessionManager.logout();
            Intent logout = new Intent(getActivity(), LoginActivity.class);
            startActivity(logout);
        }
    });
    return view;
}
  

}

Комментарии:

1. Я не могу понять, что вы пытаетесь сделать из своего кода, почему вы не пытаетесь следовать одному из миллионов руководств по этой теме?

Ответ №1:

Вы не можете использовать startActivity() непосредственно из fragment, поэтому вы можете использовать getActivity().startActivity() или getContext.startActivity(); Я не уверен, поэтому попробуйте их оба. Кроме того, укажите ошибку, я смогу сказать точную проблему)) Кроме того, старайтесь не использовать функции внутри activities, лучше поместить их в другой класс. И если вы собираетесь использовать что-то из activity, узнайте об интерфейсах)) Надеюсь, это поможет))

Комментарии:

1. Проблема заключается в первом фрагменте кода, поскольку я пытаюсь изменить HomeActivity на фрагмент, т.е. Я не знаю, чем заменить строку кода: ((HomeActivity) context).finish();

2. Используйте getActivity. finish()

3. Спасибо, я попробую