Java 虽然存在片段事务的commit(),但未调用onAttach()-方法
我想知道,我如何才能弄清楚,为什么我的onAttach方法没有被调用。存在片段事务的提交和相应的替换。我的日志消息和调试步骤告诉我,Java 虽然存在片段事务的commit(),但未调用onAttach()-方法,java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,我想知道,我如何才能弄清楚,为什么我的onAttach方法没有被调用。存在片段事务的提交和相应的替换。我的日志消息和调试步骤告诉我,QuotesFragment类的onAttach()方法从未被触发 以下是我在MainActivity类中的转发过程: private void forwardToQuotesFragment(){ FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace
QuotesFragment
类的onAttach()
方法从未被触发
以下是我在MainActivity类中的转发过程:
private void forwardToQuotesFragment(){
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, quotesFragment, QuotesFragment.QUOTES_FRAGMENT_TAG);
ft.commit();
// onAttach()-method of QuotesFragment is not getting called - why?
}
我发现了问题。正如我在之前的评论中提到的,我的问题的原因是在我的手机上安装了安卓5.0.2,我的应用程序是为安卓6.0以上版本创建的 此外,我还使用了android.app.*-类。现在我将这些类更改为相应的android支持库类。这意味着我的MainActivity扩展自AppCompatActivity,而我的片段则扩展自android.support.v4.app.Fragment。需要稍微更新片段事务过程,如下所示:
private void forwardToQuotesFragment(){
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, quotesFragment);
ft.commit();
}
日志中可能有一些错误/警告。检查日志谢谢这个提示Akshay,这是我的控制台的输出。正如您所看到的,这里只提到了一个错误,它被打印在其他信息消息(onCreate)的下面——所以对我来说,所有这些都应该运行正常。D/ViewRootImpl:viewPostimeiInputStage ACTION_DOWN I/QuotesFragment:onCreate()I/QuotesFragment:onCreateView()E/ViewRootImpl:sendUserActionEvent()mView==null V/RenderScript:应用程序请求的CPU执行V/RenderScript:0x93522400启动线程,CPU 8method已弃用,请查看更新的用法。嗨,Karan,您的意思是从onAttach(活动)更改为onAttach(上下文)?如果是,在我的应用程序中,我使用的是当前推荐的版本!我可能找到了问题的根源:我的设备运行在安卓棒棒糖(5.0.2)上。我的应用程序项目专注于安卓6+。onAttach()-params从Android 5更改为6。这种变化可能会导致OnAtach的调用丢失-你怎么看?