setFragment 不能应用于其他片段

时间:2021-01-29 12:15:39

标签: java android

我正在尝试为我的 Android 应用程序填写 FragmentReplacerActivity.java,但我遇到了一些令我感到困惑的错误。

package com.example.soulforge;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;
import android.widget.FrameLayout;

import com.example.soulforge.fragments.CreateAccountFragment;
import com.example.soulforge.fragments.LoginFragment;

public class FragmentReplacerActivity extends AppCompatActivity {

    private FrameLayout frameLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment_replacer);

        frameLayout = findViewById(R.id.frameLayout);

        setFragment(new LoginFragment());

    }

    public void setFragment(Fragment fragment){

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

        if(fragment instanceof CreateAccountFragment ){
            fragmentTransaction.addToBackStack(null);
        }

        fragmentTransaction.replace(frameLayout.getId(), fragment);
        fragmentTransaction.commit();
    }
}

为什么会出现此错误,我该如何解决?

picture of the code with the error

2 个答案:

答案 0 :(得分:1)

确保您已在 FragmentReplacerActivity 类中导入“androidx.fragment.app.Fragment”。并检查它是否在您的 LoginFragment 中正确导入。

您可能在 soulforge/app/build.gradle 文件中缺少 androidx 片段 Gradle 依赖项。可以通过以下方式添加:

dependencies {
    def fragment_version = "1.2.5"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    ...
}

答案 1 :(得分:0)

首先

检查您的 LoginFragment 类是否继承了 Fragment 类

如果不是这样,

检查 LoginFragment 类是否扩展了正确的 Fragment 类,因为有多个片段类

在你的情况下,检查你是否延长

androidx.fragment.app.Fragment

不是这个

android.app.Fragment

检查setFragment方法中的Fragment类是否与继承Fragment类的LoginFrgament相同

相关问题