我目前的问题是我试图触发Animator在两个活动之间转换。我的目标是创建从一个Activity到另一个Activity的循环显示过渡。
我开始收到此错误:“无法在独立视图上启动此动画制作工具!”
我正在环顾Stack Overflow并发现:Cannot start this animator on a detached view! reveal effect
一个解释似乎是第二个活动的观点尚未夸大,这就是动画师无法启动的原因。
线程中的人使用此作为解决方案:
@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;
}
但是,我对这里发生的事情有点困惑。看起来他也在夸大活动的布局。如果是这样的话,我不应该打电话:
setContentView(R.layout.activity_bnew_account);
在Activity的onCreate方法中?我是否应该在重写的onCreateView中使用布局inflater来扩展活动布局?感谢您提供有关如何解决此问题的任何建议。
答案 0 :(得分:1)
onCreateView是Fragments上的一种方法,请参阅文档here
没有活动的等价物,setContentView会在你的布局上调用inflate。
该活动代码的粗略等效项将是(其中R.id.rooViewId
是您的活动布局中根视图的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);
}
});
}
}