我有一个扩展AppCompactActivity的活动,在onCreate方法中,我用通常的方法设置了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组件,要在作为此活动的子代的片段之间共享数据并管理生命周期,我必须在活动中获取此组件,因此我将此扩展生命周期活动。
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与AppCompatiActivity没有任何关系,FragmentActivity也没有。
public class LifecycleActivity extends FragmentActivity implements LifecycleRegistryOwner {
    private final LifecycleRegistry mRegistry = new LifecycleRegistry(this);

    public LifecycleActivity() {
    }

    public LifecycleRegistry getLifecycle() {
        return this.mRegistry;
    }
}

我做错什么了吗?

最佳答案

更新2017-10-05:LifecycleActivity已被否决。如果使用26.1.0或更高版本的support-fragmentappcompat-v7,则同时使用FragmentActivityAppCompatActivityimplementLifecycleOwner
出于历史(可能是歇斯底里的)目的,原始答案出现在下面。
引用the documentation
注意:由于体系结构组件处于alpha阶段,因此fragment和appcompatactivity类无法实现它(因为我们无法将依赖项从稳定组件添加到不稳定的API)。在生命周期稳定之前,为方便起见,提供了LifecycleActivity和LifecycleFragment类。生命周期项目发布后,支持库片段和活动将实现LifecycleOwner接口;此时将不推荐使用LifecycleActivity和LifecycleFragment。
LifecycleActivityFragmentActivity关联,而不是AppCompatActivity
您应该能够创建自己的AppCompatLifecycleActivity如下:

public class AppCompatLifecycleActivity extends AppCompatActivity implements LifecycleRegistryOwner {

    private final LifecycleRegistry mRegistry = new LifecycleRegistry(this);

    @Override
    public LifecycleRegistry getLifecycle() {
        return mRegistry;
    }
}

07-24 19:14