在ViewModelFactory中使用位置

时间:2018-10-30 01:33:15

标签: android

我是Android的新手,正在使用GoogleMap进行项目。它是一个包含三个片段的应用程序:一个包含地图,一个包含餐厅列表(使用api的googleapi搜索)和一个带有同事列表的应用程序。 我想创建一个ModelView来保存我将在前两个片段中使用的餐厅列表。

在MainActivity中,我想获取用户的位置(使用FusedLocationProviderClient),然后在ViewModel中重新插入位置。

我的MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    key = getString(R.string.api_google_place_key);

    mFusedLocationClient.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
        @Override
        public void onSuccess(Location location) {
            if (location != null) {
                my_location = location.getLatitude() + "," + location.getLongitude();
                mModel = ViewModelProviders.of(this,new RestaurantViewModelFactory(key,my_location)).get(RestaurantViewModel.class);
            }
        }
    });
    configureToolBar();
    configureDrawerLayout();
    configureNavigationView();
    initFragment();
    configureBottomOnClick();
    updateProfileData();
}

我有一个问题,因为该行中的this

mModel = ViewModelProviders.of(this,new RestaurantViewModelFactory(key,my_location)).get(RestaurantViewModel.class);

无法识别。

我怎么称呼我的MainActivity?

仅当FusedLocationProviderClient提供的Location成功时,我才想创建我的mModel。这就是为什么我将mModel放在OnSuccess内的原因。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试用MainActivity.this代替this(指OnSuccessListener):

mModel = ViewModelProviders.of(MainActivity.this, new RestaurantViewModelFactory(key,my_location)).get(RestaurantViewModel.class);`