extends Activity {
12 |
13 | private P presenter;
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | presenter = initPresenter();
18 | super.onCreate(savedInstanceState);
19 | initViews();
20 | }
21 |
22 | protected abstract P initPresenter();
23 |
24 | protected abstract void initViews();
25 |
26 |
27 | @Override
28 | protected void onDestroy() {
29 | super.onDestroy();
30 | if (presenter != null) presenter.detachView();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Blogs/AndroidMvp/AndroidMvp/app/src/main/java/io/github/eterrao/androidmvp/activity/LoginActivity.java:
--------------------------------------------------------------------------------
1 | package io.github.eterrao.androidmvp.activity;
2 |
3 | import android.animation.Animator;
4 | import android.animation.AnimatorListenerAdapter;
5 | import android.annotation.TargetApi;
6 | import android.content.pm.PackageManager;
7 | import android.support.annotation.NonNull;
8 | import android.support.design.widget.Snackbar;
9 | import android.support.v7.app.AppCompatActivity;
10 | import android.app.LoaderManager.LoaderCallbacks;
11 |
12 | import android.content.CursorLoader;
13 | import android.content.Loader;
14 | import android.database.Cursor;
15 | import android.net.Uri;
16 | import android.os.AsyncTask;
17 |
18 | import android.os.Build;
19 | import android.os.Bundle;
20 | import android.provider.ContactsContract;
21 | import android.text.TextUtils;
22 | import android.view.KeyEvent;
23 | import android.view.View;
24 | import android.view.View.OnClickListener;
25 | import android.view.inputmethod.EditorInfo;
26 | import android.widget.ArrayAdapter;
27 | import android.widget.AutoCompleteTextView;
28 | import android.widget.Button;
29 | import android.widget.EditText;
30 | import android.widget.TextView;
31 |
32 | import java.util.ArrayList;
33 | import java.util.List;
34 |
35 | import io.github.eterrao.androidmvp.R;
36 |
37 | import static android.Manifest.permission.READ_CONTACTS;
38 |
39 | /**
40 | * A login screen that offers login via email/password.
41 | */
42 | public class LoginActivity extends AppCompatActivity implements LoaderCallbacks
19 |
24 |
29 |
34 |
81 |
83 |