我正在尝试为我的 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();
}
}
为什么会出现此错误,我该如何解决?
答案 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相同