我在android studio开发中使用初学者。我试图将我的活动代码更改为片段代码。到目前为止我管理的是,我在这段代码中发现了一个难点:
public void logout(){
editor.clear();
editor.commit();
Intent i = new Intent(context, LoginActivity.class);
context.startActivity(i);
((HomeActivity) context).finish();
}
基本上我想用一个驻留在我的mainActivity中的片段来改变HomeActivity
,我试图用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;
}
}
您不能直接从fragment使用startActivity(),因此您可以使用getActivity()。startActivity()或getContext.startActivity();我不确定,所以试试两个。另外,提供错误,我将能够说出确切的问题))而且,尽量不要在活动内部使用函数,最好将它们放入另一个类中。如果你要使用活动中的东西,了解接口))希望它有帮助))