Skip to content

Commit 7b889f1

Browse files
committed
Sync stats for real this time + method injection to bind presenter and view
1 parent 2502501 commit 7b889f1

File tree

10 files changed

+57
-38
lines changed

10 files changed

+57
-38
lines changed

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package com.example.android.architecture.blueprints.todoapp.addedittask;
1818

19-
import static com.google.common.base.Preconditions.checkNotNull;
20-
2119
import android.app.Activity;
2220
import android.os.Bundle;
2321
import android.support.annotation.NonNull;
@@ -32,6 +30,8 @@
3230

3331
import com.example.android.architecture.blueprints.todoapp.R;
3432

33+
import static com.google.common.base.Preconditions.checkNotNull;
34+
3535
/**
3636
* Main UI for the add task screen. Users can enter a task title and description.
3737
*/
@@ -95,7 +95,7 @@ public void onClick(View v) {
9595
@Nullable
9696
@Override
9797
public View onCreateView(LayoutInflater inflater, ViewGroup container,
98-
Bundle savedInstanceState) {
98+
Bundle savedInstanceState) {
9999
View root = inflater.inflate(R.layout.addtask_frag, container, false);
100100
mTitle = (TextView) root.findViewById(R.id.add_task_title);
101101
mDescription = (TextView) root.findViewById(R.id.add_task_description);

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/statistics/StatisticsActivity.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717
package com.example.android.architecture.blueprints.todoapp.statistics;
1818

19-
import com.example.android.architecture.blueprints.todoapp.R;
20-
import com.example.android.architecture.blueprints.todoapp.tasks.TasksActivity;
21-
import com.example.android.architecture.blueprints.todoapp.util.ActivityUtils;
22-
2319
import android.content.Intent;
2420
import android.os.Bundle;
2521
import android.support.design.widget.NavigationView;
@@ -30,6 +26,11 @@
3026
import android.support.v7.widget.Toolbar;
3127
import android.view.MenuItem;
3228

29+
import com.example.android.architecture.blueprints.todoapp.R;
30+
import com.example.android.architecture.blueprints.todoapp.ToDoApplication;
31+
import com.example.android.architecture.blueprints.todoapp.tasks.TasksActivity;
32+
import com.example.android.architecture.blueprints.todoapp.util.ActivityUtils;
33+
3334
/**
3435
* Show statistics for tasks.
3536
*/
@@ -59,8 +60,19 @@ protected void onCreate(Bundle savedInstanceState) {
5960
setupDrawerContent(navigationView);
6061
}
6162

62-
ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
63-
StatisticsFragment.newInstance(), R.id.contentFrame);
63+
StatisticsFragment statisticsFragment = (StatisticsFragment) getSupportFragmentManager()
64+
.findFragmentById(R.id.contentFrame);
65+
if (statisticsFragment == null) {
66+
statisticsFragment = StatisticsFragment.newInstance();
67+
ActivityUtils.addFragmentToActivity(getSupportFragmentManager(),
68+
statisticsFragment, R.id.contentFrame);
69+
}
70+
71+
DaggerStatisticsFragmentComponent.builder()
72+
.statisticsPresenterModule(new StatisticsPresenterModule(statisticsFragment))
73+
.tasksRepositoryComponent(((ToDoApplication) getApplication())
74+
.getTasksRepositoryComponent())
75+
.build().getStatisticsPresenter();
6476
}
6577

6678
@Override

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/statistics/StatisticsFragment.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import android.widget.TextView;
2929

3030
import com.example.android.architecture.blueprints.todoapp.R;
31-
import com.example.android.architecture.blueprints.todoapp.ToDoApplication;
3231

3332
/**
3433
* Main UI for the statistics screen.
@@ -43,16 +42,6 @@ public static StatisticsFragment newInstance() {
4342
return new StatisticsFragment();
4443
}
4544

46-
@Override
47-
public void onActivityCreated(Bundle savedInstanceState) {
48-
super.onActivityCreated(savedInstanceState);
49-
mPresenter = DaggerStatisticsFragmentComponent.builder()
50-
.statisticsPresenterModule(new StatisticsPresenterModule(this))
51-
.tasksRepositoryComponent(((ToDoApplication) getActivity().getApplication())
52-
.getTasksRepositoryComponent())
53-
.build().getStatisticsPresenter();
54-
}
55-
5645
@Override
5746
public void setPresenter(@NonNull StatisticsContract.Presenter presenter) {
5847
mPresenter = checkNotNull(presenter);
@@ -61,7 +50,7 @@ public void setPresenter(@NonNull StatisticsContract.Presenter presenter) {
6150
@Nullable
6251
@Override
6352
public View onCreateView(LayoutInflater inflater, ViewGroup container,
64-
Bundle savedInstanceState) {
53+
Bundle savedInstanceState) {
6554
View root = inflater.inflate(R.layout.statistics_frag, container, false);
6655
mStatisticsTV = (TextView) root.findViewById(R.id.statistics);
6756
return root;

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/statistics/StatisticsPresenter.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,21 @@ final class StatisticsPresenter implements StatisticsContract.Presenter {
5555
mStatisticsView = statisticsView;
5656
}
5757

58+
/**
59+
* Method injection is used here to safely reference {@code this} after the object is created.
60+
* For more information, see Java Concurrency in Practice.
61+
*/
62+
@Inject
63+
void setupListeners() {
64+
mStatisticsView.setPresenter(this);
65+
}
66+
5867
@Override
5968
public void start() {
6069
loadStatistics();
6170
}
6271

63-
public void loadStatistics() {
72+
private void loadStatistics() {
6473
mStatisticsView.setProgressIndicator(true);
6574

6675
// The network request might be handled in a different thread so make sure Espresso knows

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/taskdetail/TaskDetailFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public void onResume() {
7474
@Nullable
7575
@Override
7676
public View onCreateView(LayoutInflater inflater, ViewGroup container,
77-
Bundle savedInstanceState) {
77+
Bundle savedInstanceState) {
7878
View root = inflater.inflate(R.layout.taskdetail_frag, container, false);
7979
setHasOptionsMenu(true);
8080
mDetailTitle = (TextView) root.findViewById(R.id.task_detail_title);

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/taskdetail/TaskDetailPresenter.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,17 @@ final class TaskDetailPresenter implements TaskDetailContract.Presenter {
5858
mTasksRepository = tasksRepository;
5959
mTaskDetailView = taskDetailView;
6060
mTaskId = taskId;
61+
}
6162

63+
/**
64+
* Method injection is used here to safely reference {@code this} after the object is created.
65+
* For more information, see Java Concurrency in Practice.
66+
*/
67+
@Inject
68+
void setupListeners() {
6269
mTaskDetailView.setPresenter(this);
6370
}
6471

65-
//
66-
// TaskDetailPresenter(TaskDetailComponent component) {
67-
// component.inject(this);
68-
// mTaskDetailView.setPresenter(this);
69-
// }
70-
7172
@Override
7273
public void start() {
7374
openTask();

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ protected void onCreate(Bundle savedInstanceState) {
7575
mTasksPresenter = DaggerTasksComponent.builder()
7676
.tasksRepositoryComponent(((ToDoApplication) getApplication())
7777
.getTasksRepositoryComponent())
78-
.tasksPresenterModule(new TasksPresenterModule(tasksFragment)).build().getTasksPresenter();
78+
.tasksPresenterModule(new TasksPresenterModule(tasksFragment)).build()
79+
.getTasksPresenter();
7980

8081
// Load previously saved state, if available.
8182
if (savedInstanceState != null) {

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package com.example.android.architecture.blueprints.todoapp.tasks;
1818

19-
import static com.google.common.base.Preconditions.checkNotNull;
20-
2119
import android.content.Intent;
2220
import android.os.Bundle;
2321
import android.support.annotation.NonNull;
@@ -49,6 +47,8 @@
4947
import java.util.ArrayList;
5048
import java.util.List;
5149

50+
import static com.google.common.base.Preconditions.checkNotNull;
51+
5252
/**
5353
* Display a grid of {@link Task}s. User can choose to view all, active or completed tasks.
5454
*/
@@ -443,4 +443,4 @@ public interface TaskItemListener {
443443
void onActivateTaskClick(Task activatedTask);
444444
}
445445

446-
}
446+
}

todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksPresenter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,14 @@ final class TasksPresenter implements TasksContract.Presenter {
6464
TasksPresenter(TasksRepository tasksRepository, TasksContract.View tasksView) {
6565
mTasksRepository = tasksRepository;
6666
mTasksView = tasksView;
67+
}
6768

69+
/**
70+
* Method injection is used here to safely reference {@code this} after the object is created.
71+
* For more information, see Java Concurrency in Practice.
72+
*/
73+
@Inject
74+
void setupListeners() {
6875
mTasksView.setPresenter(this);
6976
}
7077

todoapp/app/src/test/java/com/example/android/architecture/blueprints/todoapp/taskdetail/TaskDetailPresenterTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@
1616

1717
package com.example.android.architecture.blueprints.todoapp.taskdetail;
1818

19-
import static org.mockito.Matchers.eq;
20-
import static org.mockito.Mockito.never;
21-
import static org.mockito.Mockito.verify;
22-
import static org.mockito.Mockito.when;
23-
2419
import com.example.android.architecture.blueprints.todoapp.data.Task;
2520
import com.example.android.architecture.blueprints.todoapp.data.source.TasksDataSource;
2621
import com.example.android.architecture.blueprints.todoapp.data.source.TasksRepository;
@@ -32,6 +27,11 @@
3227
import org.mockito.Mock;
3328
import org.mockito.MockitoAnnotations;
3429

30+
import static org.mockito.Matchers.eq;
31+
import static org.mockito.Mockito.never;
32+
import static org.mockito.Mockito.verify;
33+
import static org.mockito.Mockito.when;
34+
3535
/**
3636
* Unit tests for the implementation of {@link TaskDetailPresenter}
3737
*/

0 commit comments

Comments
 (0)