我有一个扩展了AppCompactActivity的Activity,在onCreate
方法中,我通常的方式使用setSupportActionBar
方法来设置 Toolbar
:
public class StepMasterActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_step_master);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);`
}
}
但是现在我有一个ViewModel组件,并且要在此活动的子片段之间共享数据,并管理其生命周期,我需要在Activity中获取此组件,因此我让它扩展LifecycleActivity。
public class StepMasterActivity extends LifecycleActivity {
@Override
public class StepMasterActivity extends LifecycleActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_step_master);
// setToolbar();
SharedViewModel sharedViewModel = ViewModelProviders.of(this).get(SharedViewModel.class);
}
}
但我注意到LifecycleActivity与AppCompatActivity和FragmentActivity没有任何关系。
public class LifecycleActivity extends FragmentActivity implements LifecycleRegistryOwner {
private final LifecycleRegistry mRegistry = new LifecycleRegistry(this);
public LifecycleActivity() {
}
public LifecycleRegistry getLifecycle() {
return this.mRegistry;
}
}
我做错了什么吗?
26.1.0
或更高版本,则不需要此代码片段。FragmentActivity
现在实现了LifecycleOwner
,而AppCompatActivity
扩展了FragmentActivity
,因此AppCompatActivity
也实现了LifecycleOwner
。 - CommonsWare