无法解析方法findViewByID(int)片段java

无法解析方法findViewByID(int)片段java,java,android,android-fragments,android-activity,android-studio,Java,Android,Android Fragments,Android Activity,Android Studio,错误:已更新 试图使用GetView。findViewById错误无法解析方法GetView 尝试仅使用findViewById错误无法解决findViewById(int) package com.example.user.myapplication.Tabs; 导入android.animation.Animator; 导入android.animation.ValueAnimator; 导入android.os.Bundle; 导入android.support.annotation.N

错误:已更新

试图使用
GetView。findViewById
错误无法解析方法
GetView
尝试仅使用
findViewById
错误无法解决
findViewById(int)

package com.example.user.myapplication.Tabs;
导入android.animation.Animator;
导入android.animation.ValueAnimator;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.ViewTreeObserver;
导入android.widget.LinearLayout;
导入com.example.user.myapplication.R;
公共级酒店{
线性布局;
线性布局,近布局引导器;
评估师、动画师、模拟师;
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图v=充气机。充气(右布局。酒店框架,集装箱,假);
返回v;
mLinearLayout=(LinearLayout)v.findviewbyd(R.id.expandable);
//mLinearLayout.setVisibility(View.GONE);
mlinearlayouthheader=(LinearLayout)v.findViewById(R.id.header);
//AddOnPreDrawListener
mLinearLayout.getViewTreeObserver().addOnPreDrawListener(
新建ViewTreeObserver.OnPreDrawListener(){
@凌驾
公共布尔onPreDraw(){
mLinearLayout.getViewTreeObserver().removeOnPreDrawListener(此);
mLinearLayout.setVisibility(View.GONE);
final int widthSpec=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.unspected);
final int heightSpec=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.unspected);
MLINEARELAYOUT.测量(宽度规格、高度规格);
mAnimator=slideAnimator(0,mLinearLayout.getMeasuredHeight());
返回true;
}
});
mlinearlayouthreader.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图v){
if(mLinearLayout.getVisibility()==View.GONE){
展开();
}否则{
塌陷();
}
}
});
返回v;
}
私有void expand(){
//可见
mLinearLayout.setVisibility(View.VISIBLE);
/*删除并在preDrawListener中使用
final int widthSpec=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.unspected);
final int heightSpec=View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.unspected);
MLINEARELAYOUT.测量(宽度规格、高度规格);
mAnimator=slideAnimator(0,mLinearLayout.getMeasuredHeight());
*/
mAnimator.start();
}
私有空间崩溃(){
int finalHeight=mLinearLayout.getHeight();
值Animator mAnimator=slideAnimator(最终高度,0);
mAnimator.addListener(新的Animator.AnimatorListener(){
@凌驾
AnimationEnd上的公共无效(Animator Animator){
//高度=0,但它将可见性设置为“消失”
mLinearLayout.setVisibility(View.GONE);
}
@凌驾
AnimationStart上的公共无效(Animator Animator){
}
@凌驾
AnimationCancel上的公共无效(Animator Animator){
}
@凌驾
AnimationRepeat上的公共无效(Animator Animator){
}
});
mAnimator.start();
}
私有值Animator slideAnimator(int开始,int结束){
ValueAnimator animator=ValueAnimator.ofInt(开始、结束);
animator.addUpdateListener(新值animator.AnimatorUpdateListener(){
@凌驾
动画更新上的公共无效(ValueAnimator ValueAnimator){
//更新高度
int value=(整数)valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams LayoutParams=mLinearLayout.getLayoutParams();
layoutParams.height=值;
mLinearLayout.setLayoutParams(layoutParams);
}
});
返回动画师;
}
}
试试这个

mLinearLayout = (LinearLayout) v.findViewById(R.id.expandable);
“return v”应该是onCreateView方法中的最后一行

你的方法应该是这样的

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.hotel_frag,container,false);

   mLinearLayout = (LinearLayout) v.findViewById(R.id.expandable);
    //mLinearLayout.setVisibility(View.GONE);
    mLinearLayoutHeader = (LinearLayout) v.findViewById(R.id.header);

    //Add onPreDrawListener
    mLinearLayout.getViewTreeObserver().addOnPreDrawListener(
            new ViewTreeObserver.OnPreDrawListener() {

                @Override
                public boolean onPreDraw() {
                    mLinearLayout.getViewTreeObserver().removeOnPreDrawListener(this);
                    mLinearLayout.setVisibility(View.GONE);

                    final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
                    final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
                    mLinearLayout.measure(widthSpec, heightSpec);

                    mAnimator = slideAnimator(0, mLinearLayout.getMeasuredHeight());
                    return true;
                }
            });


    mLinearLayoutHeader.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mLinearLayout.getVisibility()==View.GONE){
                expand();
            }else{
                collapse();
            }
        }
    });

    return v;
}

请在oncreate方法的末尾给出return语句

    @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View v =inflater.inflate(R.layout.hotel_frag,container,false);

----------------- your code -----------------

            return v;
}

findViewById
不是
Fragment
类的方法使用
View
对象访问
findViewById
方法。类似于
mlinearlayouthreader=(LinearLayout)findViewById(R.id.header)行使用
mlinearlayou=(LinearLayou)v.findViewById(R.id.header)v
您从创建视图返回的方法似乎不起作用:/edit and update您的代码,我们将告诉您为什么它不起作用..尝试了该方法也不起作用“在我的mLinearLayout=(LinearLayout)v.findViewById(R.id.expandable)上的不可访问语句”;删除第二行的return v call..我已经更新了答案谢谢我的朋友你刚刚救了我的命..这个答案应该被标记为最佳答案