Reputation: 551
I am using Firebase database on my app, and sometimes when the data change the app crash:
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)
I check everythings and nothing look wrong. any help?
This is my 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) {
}
});
}
}
The drawable is ok and also checked , and the database items, the crash occurs sometimes not every time the database change
Upvotes: 1
Views: 1152
Reputation: 892
As exception says "Fragmento_Medios_FB not attached to Activity" it's mean that when your data changed and notify you by "addValueEventListener" Fragmento_Medios_FB wasn't attach. To prevent crashes you have to unregister listener in onStop method of lifecycle.
Upvotes: 2
Reputation: 10152
Their are quite trick solution for this:
Activity activity = getActivity();
if(activity != null && isAdded()) {
int Idsomeid = getResources().getIdentifier(edo_medios_sector_sur_01S, "drawable", getActivity().getPackageName());
}
This is happened clearly because your fragment are created but NOT YET attached to Activity when the data come from Firebase.
Many cases can return this exception like Fragment MyFragment not attached to Activity and java.lang.IllegalStateException: Fragment not attached to Activity
Upvotes: 2