Fragment中调用startActivity报错:无法解析symbol 'fragment_profile'
错误修正方案
错误原因
fragment_profile是Fragment对应的XML布局文件名,并非Java类,因此不能用fragment_profile.this作为Intent的上下文参数。在Fragment中,需使用Fragment自身的上下文或其关联的Activity来创建Intent。
修正后的代码
void signOut(){ gsc.signOut().addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { // 空判断避免Fragment与Activity解绑后出现空指针 if(getActivity() != null){ getActivity().finish(); } // 使用Fragment上下文创建Intent并启动登录页 startActivity(new Intent(getContext(), login_page.class)); Toast.makeText(getContext(), "Signed out", Toast.LENGTH_LONG).show(); } }); }
额外优化建议
- Fragment本身已实现
startActivity()方法,无需额外嵌套getActivity()调用。 - 若希望登录页启动后清除之前的Activity栈(防止用户返回个人中心页),可给Intent添加栈清理标记:
Intent loginIntent = new Intent(getContext(), login_page.class); loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(loginIntent);
内容的提问来源于stack exchange,提问作者Sasani Perera
相关产品推荐
相关产品推荐

