我在我的应用程序上使用 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 Activity和 java.lang.IllegalStateException: Fragment not attached to Activity
关于android - Firebase 数据库 IllegalStateException : Fragment not attached to Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45739067/