1 package com.xtremelabs.robolectric.shadows; 2 3 import android.content.Intent; 4 import android.content.res.Resources; 5 import android.os.Bundle; 6 import android.support.v4.app.Fragment; 7 import android.support.v4.app.FragmentActivity; 8 import android.support.v4.app.FragmentManager; 9 import android.view.View; 10 import com.xtremelabs.robolectric.internal.Implementation; 11 import com.xtremelabs.robolectric.internal.Implements; 12 import com.xtremelabs.robolectric.internal.RealObject; 13 14 @Implements(Fragment.class) 15 public class ShadowFragment { 16 @RealObject 17 protected Fragment realFragment; 18 19 protected View view; 20 protected FragmentActivity activity; 21 private String tag; 22 private Bundle savedInstanceState; 23 private int containerViewId; 24 private boolean shouldReplace; 25 private Bundle arguments; 26 private boolean attached; 27 private boolean hidden; 28 private boolean added; 29 setView(View view)30 public void setView(View view) { 31 this.view = view; 32 } 33 setActivity(FragmentActivity activity)34 public void setActivity(FragmentActivity activity) { 35 this.activity = activity; 36 } 37 38 @Implementation getView()39 public View getView() { 40 return view; 41 } 42 43 @Implementation getActivity()44 public FragmentActivity getActivity() { 45 return activity; 46 } 47 48 @Implementation startActivity(Intent intent)49 public void startActivity(Intent intent) { 50 new FragmentActivity().startActivity(intent); 51 } 52 53 @Implementation startActivityForResult(Intent intent, int requestCode)54 public void startActivityForResult(Intent intent, int requestCode) { 55 activity.startActivityForResult(intent, requestCode); 56 } 57 58 @Implementation getFragmentManager()59 public FragmentManager getFragmentManager() { 60 return activity.getSupportFragmentManager(); 61 } 62 63 @Implementation getChildFragmentManager()64 public FragmentManager getChildFragmentManager() { 65 // Doesn't follow support library behavior, but is correct enough 66 // for robolectric v1. 67 return getFragmentManager(); 68 } 69 70 @Implementation getTag()71 public String getTag() { 72 return tag; 73 } 74 75 @Implementation getResources()76 public Resources getResources() { 77 if (activity == null) { 78 throw new IllegalStateException("Fragment " + this + " not attached to Activity"); 79 } 80 return activity.getResources(); 81 } 82 setTag(String tag)83 public void setTag(String tag) { 84 this.tag = tag; 85 } 86 setSavedInstanceState(Bundle savedInstanceState)87 public void setSavedInstanceState(Bundle savedInstanceState) { 88 this.savedInstanceState = savedInstanceState; 89 } 90 getSavedInstanceState()91 public Bundle getSavedInstanceState() { 92 return savedInstanceState; 93 } 94 setContainerViewId(int containerViewId)95 public void setContainerViewId(int containerViewId) { 96 this.containerViewId = containerViewId; 97 } 98 getContainerViewId()99 public int getContainerViewId() { 100 return containerViewId; 101 } 102 setShouldReplace(boolean shouldReplace)103 public void setShouldReplace(boolean shouldReplace) { 104 this.shouldReplace = shouldReplace; 105 } 106 getShouldReplace()107 public boolean getShouldReplace() { 108 return shouldReplace; 109 } 110 111 @Implementation getArguments()112 public Bundle getArguments() { 113 return arguments; 114 } 115 116 @Implementation setArguments(Bundle arguments)117 public void setArguments(Bundle arguments) { 118 this.arguments = arguments; 119 } 120 121 @Implementation getString(int resId)122 public final String getString(int resId) { 123 if (activity == null) { 124 throw new IllegalStateException("Fragment " + this + " not attached to Activity"); 125 } 126 return activity.getString(resId); 127 } 128 129 @Implementation getString(int resId, Object... formatArgs)130 public final String getString(int resId, Object... formatArgs) { 131 if (activity == null) { 132 throw new IllegalStateException("Fragment " + this + " not attached to Activity"); 133 } 134 return activity.getString(resId, formatArgs); 135 } 136 setAttached(boolean isAttached)137 public void setAttached(boolean isAttached) { 138 attached = isAttached; 139 } 140 isAttached()141 public boolean isAttached() { 142 return attached; 143 } 144 setHidden(boolean isHidden)145 public void setHidden(boolean isHidden) { 146 hidden = isHidden; 147 } 148 setAdded(boolean isAdded)149 public void setAdded(boolean isAdded) { 150 added = isAdded; 151 } 152 153 @Implementation isAdded()154 public boolean isAdded() { 155 return getActivity() != null && added; 156 } 157 158 @Implementation isHidden()159 public boolean isHidden() { 160 return hidden; 161 } 162 163 @Implementation isVisible()164 public boolean isVisible() { 165 return isAdded() && !isHidden() && getView() != null 166 && getView().getVisibility() == View.VISIBLE; 167 } 168 } 169