ViewModelActivity.java revision b31c3281d870e9abb673db239234d580dcc4feff
1/*
2 * Copyright 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package androidx.fragment.app.test;
18
19import android.arch.lifecycle.ViewModelProvider;
20import android.os.Bundle;
21import androidx.annotation.Nullable;
22import androidx.fragment.test.R;
23import androidx.fragment.app.Fragment;
24import androidx.fragment.app.FragmentActivity;
25
26public class ViewModelActivity extends FragmentActivity {
27    public static final String KEY_FRAGMENT_MODEL = "fragment-model";
28    public static final String KEY_ACTIVITY_MODEL = "activity-model";
29    public static final String FRAGMENT_TAG_1 = "f1";
30    public static final String FRAGMENT_TAG_2 = "f2";
31
32    public TestViewModel activityModel;
33    public TestViewModel defaultActivityModel;
34
35    @Override
36    protected void onCreate(@Nullable Bundle savedInstanceState) {
37        super.onCreate(savedInstanceState);
38        setContentView(R.layout.activity_view_model);
39        if (savedInstanceState == null) {
40            getSupportFragmentManager().beginTransaction()
41                    .add(R.id.fragment_container, new ViewModelFragment(), FRAGMENT_TAG_1)
42                    .add(new ViewModelFragment(), FRAGMENT_TAG_2)
43                    .commit();
44        }
45
46        ViewModelProvider viewModelProvider = new ViewModelProvider(this,
47                new ViewModelProvider.NewInstanceFactory());
48        activityModel = viewModelProvider.get(KEY_ACTIVITY_MODEL, TestViewModel.class);
49        defaultActivityModel = viewModelProvider.get(TestViewModel.class);
50    }
51
52    public static class ViewModelFragment extends Fragment {
53        public TestViewModel fragmentModel;
54        public TestViewModel activityModel;
55        public TestViewModel defaultActivityModel;
56
57        @Override
58        public void onCreate(@Nullable Bundle savedInstanceState) {
59            super.onCreate(savedInstanceState);
60            ViewModelProvider viewModelProvider = new ViewModelProvider(this,
61                    new ViewModelProvider.NewInstanceFactory());
62            fragmentModel = viewModelProvider.get(KEY_FRAGMENT_MODEL,
63                    TestViewModel.class);
64            ViewModelProvider activityViewModelProvider = new ViewModelProvider(getActivity(),
65                    new ViewModelProvider.NewInstanceFactory());
66            activityModel = activityViewModelProvider.get(KEY_ACTIVITY_MODEL,
67                    TestViewModel.class);
68            defaultActivityModel = activityViewModelProvider.get(TestViewModel.class);
69        }
70    }
71}
72