无法使用意图更改片段内的活动



我正试图创建一个注销按钮,将我发送回登录页面活动,但出现了一个错误,我不确定如何修复。错误发生在"Profile_FFragment.this,LoginPage.class"。

这是的源代码

public class Profile_Fragment extends Fragment {
Button btnLogout;
FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener

StorageReference storageReference;
private static final int IMAGE_REQUEST = 1;
private Uri imageUri;
private StorageTask uploadTask;

@Nullable
@Override
//inflate the fragment
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
btnLogout = getView().findViewById(R.id.SignOutButton);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
Intent intToMain = new Intent(Profile_Fragment.this, LoginPage.class);
startActivity(intToMain);
}
});

return inflater.inflate(R.layout.fragment_profile, container, false);
}
}
Intent intToMain = new Intent(Profile_Fragment.this, LoginPage.class);

Profile_Fragment不是上下文。用requireContext()getActivity()替换

您可以用Context实例替换Profile_FFragment.this在这种情况下,托管Profie_Fragment的活动将是上下文。

您可以将Profile_FFragment.this替换为getActivity((;

Intent intToMain = new Intent(getActivity(), LoginPage.class);

注意:getActivity((可能返回null,因此您必须检查null值,而且这不是处理活动导航的推荐方法。您的片段应将导航事件通知托管活动,而托管该特定片段的活动应负责管理导航。查看此链接以更好地理解https://developer.android.com/training/basics/fragments/communicating#java

最新更新