-
Notifications
You must be signed in to change notification settings - Fork 0
/
PresenterBase.java
66 lines (49 loc) · 1.82 KB
/
PresenterBase.java
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
package fi.spanasenko.android.presenter;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import fi.spanasenko.android.instagram.VoidOperationCallback;
import fi.spanasenko.android.view.IBaseView;
import java.lang.ref.WeakReference;
/**
* PresenterBase
* Base class for presenters. Holds implementation of the common methods used in other presenters.
*/
public abstract class PresenterBase<T extends IBaseView> implements IBasePresenter<T> {
private WeakReference<T> _weakView;
private Context _context;
public PresenterBase(T view, Context context) {
_weakView = new WeakReference<T>(view);
_context = context;
}
public T getView() {
return _weakView.get();
}
public Context getContext() {
return _context;
}
public void setView(T view) {
_weakView.clear();
_weakView = new WeakReference<T>(view);
}
protected void openActivity(Class<? extends Activity> clazz) {
openActivity(clazz, 0);
}
protected void openActivity(Class<? extends Activity> clazz, int flags) {
// Activate an intent from a Class while still being decoupled from the UI context. Much safer.
Package p = clazz.getPackage();
String name = clazz.getName();
ComponentName cn = new ComponentName(p.getName(), name);
Intent i = new Intent();
i.setComponent(cn);
i.setFlags(flags);
openActivity(i);
}
protected void openActivity(Intent intent) {
getView().startActivity(intent);
}
protected void openAcitivtyForResult(Intent intent, VoidOperationCallback callback) {
getView().startActivityForResult(intent, callback);
}
}