【问题标题】:Can't use intent to change activity inside a fragment无法使用意图更改片段内的活动
【发布时间】:2020-11-17 14:33:49
【问题描述】:

我正在尝试创建一个注销按钮,该按钮将我发送回我的登录页面活动,但有一个错误,我不确定如何修复。错误发生在“Profile_Fragment.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);
    }
}

【问题讨论】:

  • 你能把错误贴出来

标签: android firebase android-studio android-fragments


【解决方案1】:
Intent intToMain = new Intent(Profile_Fragment.this, LoginPage.class);

Profile_Fragment 不是上下文。将其替换为requireContext()getActivity()

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多