android - Firebase 数据库 IllegalStateException : Fragment not attached to Activity

标签 android android-fragments firebase firebase-realtime-database

我在我的应用程序上使用 Firebase 数据库,有时当数据更改时应用程序崩溃:

Exception java.lang.IllegalStateException: Fragment Fragmento_Medios_FB{e0076f1} not attached to Activity
android.support.v4.app.Fragment.getResources (Fragment.java:646)
info.blacktrail.catedralapp.Fragmento_Medios_FB$2.onDataChange (Fragmento_Medios_FB.java:614)
com.google.android.gms.internal.zzbpx.zza ()
com.google.android.gms.internal.zzbqx.zzZT ()
com.google.android.gms.internal.zzbra$1.run ()
android.os.Handler.handleCallback (Handler.java:751)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:154)
android.app.ActivityThread.main (ActivityThread.java:6682)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

我检查了一切,没有任何问题。有帮助吗?

这是我的 fragment

public class Fragmento_Medios_FB extends Fragment {

    public Fragmento_Medios_FB() {
    }
    FragmentManager mFragmentManager;
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
    LinearLayout somelayout;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_medios_fb, container, false);
        somelayout=(LinearLayout)view.findviewById.(R.id.somelayout);
        return view;
    }

    @Override
    public void onStart() {
        super.onStart();

        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String someString = dataSnapshot.child("medios").getValue
                int Idsomeid = getResources().getIdentifier(edo_medios_sector_sur_01S, "drawable", getActivity().getPackageName());
                somelayout.setBackgroundResource(Idsomeid);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }
}

drawable没问题,也检查过,还有数据库项,有时不是每次数据库更改都会崩溃

最佳答案

他们对此有相当巧妙的解决方案:

Activity activity = getActivity(); 
if(activity != null && isAdded()) {
   int Idsomeid = getResources().getIdentifier(edo_medios_sector_sur_01S, "drawable", getActivity().getPackageName());
}

这很明显,因为当数据来自 Firebase 时,您的 fragment 已创建但尚未附加到 Activity。

许多情况下可以返回此异常,如 Fragment MyFragment not attached to Activityjava.lang.IllegalStateException: Fragment not attached to Activity

关于android - Firebase 数据库 IllegalStateException : Fragment not attached to Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45739067/

相关文章:

java - 将 fragment 作为参数传递?

firebase - Firestore 安全规则 - 未找到函数

android - Viewpager 拦截 snackbar dismiss

android - Dart/Flutter 如何编译到 Android 上?

android - Android 中的 ViewPager + RecyclerView 问题

ios - 测试安装路径的 Firebase 深度链接

json - 如何为同一项目中的不同谷歌 FCM 服务将两个或多个 google-services.json 文件集成在一起

android - OnClick ImageView 与 OnFling ViewFlipper

Android Studio 找不到 opencv 模块,但编译正常

android - ClassLoader 加载 android 类,它从 android 支持库扩展 android 类