|
26 | 26 | package com.massivedisaster.activitymanager; |
27 | 27 |
|
28 | 28 | import android.app.Activity; |
| 29 | +import android.content.Context; |
29 | 30 | import android.content.Intent; |
30 | 31 | import android.os.Bundle; |
31 | 32 | import android.support.v4.app.ActivityCompat; |
@@ -55,6 +56,7 @@ public class ActivityTransaction implements ITransaction<ActivityTransaction> { |
55 | 56 | private List<Pair<View, String>> mSharedElements; |
56 | 57 | private Activity mActivityBase; |
57 | 58 | private Fragment mFragment; |
| 59 | + private Context mContext; |
58 | 60 | private Integer mRequestCode; |
59 | 61 |
|
60 | 62 | /** |
@@ -89,6 +91,22 @@ public class ActivityTransaction implements ITransaction<ActivityTransaction> { |
89 | 91 | mIntent.putExtra(ACTIVITY_MANAGER_FRAGMENT, fragmentClass.getCanonicalName()); |
90 | 92 | } |
91 | 93 |
|
| 94 | + /** |
| 95 | + * ActivityTransaction constructor, created to be used by a fragment. |
| 96 | + * |
| 97 | + * @param context The context to be used to start the new activity. |
| 98 | + * @param abstractBaseActivityClass The AbstractFragmentActivity class. |
| 99 | + * @param fragmentClass The Fragment to be injected in the activityClass. |
| 100 | + */ |
| 101 | + ActivityTransaction(Context context, Class<? extends AbstractFragmentActivity> abstractBaseActivityClass, |
| 102 | + Class<? extends Fragment> fragmentClass) { |
| 103 | + mContext = context; |
| 104 | + mAbstractBaseActivity = abstractBaseActivityClass; |
| 105 | + |
| 106 | + mIntent = new Intent(mContext, mAbstractBaseActivity); |
| 107 | + mIntent.putExtra(ACTIVITY_MANAGER_FRAGMENT, fragmentClass.getCanonicalName()); |
| 108 | + } |
| 109 | + |
92 | 110 |
|
93 | 111 | @Override |
94 | 112 | public ActivityTransaction setTag(String tag) { |
@@ -159,14 +177,18 @@ public void commit() { |
159 | 177 | if (mRequestCode == null) { |
160 | 178 | if (mActivityBase != null) { |
161 | 179 | ContextCompat.startActivity(mActivityBase, intent, bundleOptions); |
162 | | - } else { |
| 180 | + } else if (mFragment != null) { |
163 | 181 | mFragment.startActivity(intent, bundleOptions); |
| 182 | + } else { |
| 183 | + mContext.startActivity(intent); |
164 | 184 | } |
165 | 185 | } else { |
166 | 186 | if (mActivityBase != null) { |
167 | 187 | ActivityCompat.startActivityForResult(mActivityBase, intent, mRequestCode, bundleOptions); |
168 | | - } else { |
| 188 | + } else if (mFragment != null) { |
169 | 189 | mFragment.startActivityForResult(intent, mRequestCode, bundleOptions); |
| 190 | + } else { |
| 191 | + mContext.startActivity(intent); |
170 | 192 | } |
171 | 193 | } |
172 | 194 | } |
|
0 commit comments