1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
package org.holoeverywhere.app;
import java.util.Collection;
import org.holoeverywhere.LayoutInflater;
import org.holoeverywhere.addon.IAddon;
import org.holoeverywhere.addon.IAddonBasicAttacher;
import org.holoeverywhere.addon.IAddonFragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app._HoloFragment;
import android.view.View;
import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.ActionMode.Callback;
public class Fragment extends _HoloFragment {
public static <T extends Fragment> T instantiate(Class<T> clazz) {
return instantiate(clazz, null);
}
public static <T extends Fragment> T instantiate(Class<T> clazz, Bundle args) {
try {
T fragment = clazz.newInstance();
if (args != null) {
args.setClassLoader(clazz.getClassLoader());
fragment.setArguments(args);
}
return fragment;
} catch (Exception e) {
throw new InstantiationException("Unable to instantiate fragment " + clazz
+ ": make sure class name exists, is public, and has an"
+ " empty constructor that is public", e);
}
}
@Deprecated
public static Fragment instantiate(Context context, String fname) {
return instantiate(context, fname, null);
}
@SuppressWarnings("unchecked")
@Deprecated
public static Fragment instantiate(Context context, String fname, Bundle args) {
try {
return instantiate((Class<? extends Fragment>) Class.forName(fname, true,
context.getClassLoader()), args);
} catch (Exception e) {
throw new InstantiationException("Unable to instantiate fragment " + fname
+ ": make sure class name exists, is public, and has an"
+ " empty constructor that is public", e);
}
}
private final IAddonBasicAttacher<IAddonFragment, Fragment> mAttacher =
new IAddonBasicAttacher<IAddonFragment, Fragment>(this);
private LayoutInflater mLayoutInflater;
@Override
public <T extends IAddonFragment> T addon(Class<? extends IAddon> clazz) {
return mAttacher.addon(clazz);
}
@Override
public void addon(Collection<Class<? extends IAddon>> classes) {
mAttacher.addon(classes);
}
@Override
public <T extends IAddonFragment> T addon(String classname) {
return mAttacher.addon(classname);
}
@Override
public LayoutInflater getLayoutInflater() {
if (mLayoutInflater == null) {
mLayoutInflater = getSupportActivity().getLayoutInflater().
obtainFragmentChildInflater(this);
}
return mLayoutInflater;
}
@Override
public boolean isAddonAttached(Class<? extends IAddon> clazz) {
return mAttacher.isAddonAttached(clazz);
}
@Override
public void lockAttaching() {
mAttacher.lockAttaching();
}
@Override
public Collection<Class<? extends IAddon>> obtainAddonsList() {
return mAttacher.obtainAddonsList();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mAttacher.reset();
mAttacher.inhert(activity);
}
@Override
public void onCreate(final Bundle savedInstanceState) {
lockAttaching();
performAddonAction(new AddonCallback<IAddonFragment>() {
@Override
public void justAction(IAddonFragment addon) {
addon.onPreCreate(savedInstanceState);
}
});
super.onCreate(savedInstanceState);
performAddonAction(new AddonCallback<IAddonFragment>() {
@Override
public void justAction(IAddonFragment addon) {
addon.onCreate(savedInstanceState);
}
});
}
@Override
public void onViewCreated(final View view, final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
performAddonAction(new AddonCallback<IAddonFragment>() {
@Override
public void justAction(IAddonFragment addon) {
addon.onViewCreated(view, savedInstanceState);
}
});
}
@Override
public boolean performAddonAction(AddonCallback<IAddonFragment> callback) {
return mAttacher.performAddonAction(callback);
}
@Override
public ActionMode startActionMode(Callback callback) {
return getSupportActivity().startActionMode(callback);
}
}
|