Android:重写 onCreateView 的正确方法是什么?

标签 android animation transition

我当前的问题是我正在尝试触发 Animator 在两个 Activity 之间转换。我的目标是创建从一个 Activity 到另一个 Activity 的循环显示过渡。

我开始收到此错误:“无法在分离 View 上启动此动画制作器!”

我在查看 Stack Overflow 时发现了这个:Cannot start this animator on a detached view! reveal effect

一种解释似乎是第二个 Activity 的 View 尚未膨胀,这就是 Animator 无法启动的原因。

线程中的人使用这个作为解决方案:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    // Inflate the layout for this fragment
    final View view = inflater.inflate(R.layout.fragment_map_list, container, false);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                v.removeOnLayoutChangeListener(this);
                toggleInformationView(view);
            }
        });
    }
    return view;
}

但是,我对这里发生的事情有点困惑。看来他也在为Activity充气布局。如果是这样,我不应该调用:

setContentView(R.layout.activity_bnew_account);

在Activity的onCreate方法中?我应该在覆盖的 onCreateView 中使用布局充气器来充气 Activity 布局吗?感谢您提供有关如何解决此问题的任何建议。

最佳答案

onCreateView 是 Fragment 上的一个方法,参见文档 here

Activity 没有等效项,setContentView 会在您的布局上调用 inflate。

Activity 代码的大致等效项是(其中 R.id.rooViewId 是 Activity 布局中 Root View 的 ID):

@Override 
public View onCreate (Bundle savedInstanceState) {
    setContentView(R.layout.activity_bnew_account);
    // Inflate the layout for this fragment
    final View view = findViewById(r.id.rootViewId);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                v.removeOnLayoutChangeListener(this);
                toggleInformationView(view);
            }
        });
    }
}

关于Android:重写 onCreateView 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526817/

相关文章:

android - 方法调用 'setDisplayHomeAsUpEnabled' 可能会产生 'java.lang.NullPointerException

android - java.lang.VerifyError : com/google/api/client/googleapis/extensions/android/gms/auth/GoogleAccountCredential$RequestHandler 错误

java.lang.NoClassDefFoundError : Failed resolution of: Lcom/google/android/gms/common/internal/zzbo;

xaml - 如何在 WinRT 中为页面导航转换设置动画?

javascript - 使用Jquery如何一键刷新CSS过渡效果?

html - 移动时的 CSS 过渡

android - 无法打开堆栈跟踪文件 '/data/anr/traces.txt/: Permission denied

android - 如何在 Android 中创建幻灯片布局动画?

java - 使用我自己的舞台系统进行处理时颜色过渡闪烁

没有jquery的Javascript动画