#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. Спасибо, я попробую