簡體   English   中英

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

[英]Cannot resolve method findViewByID(int) fragment java

錯誤:更新

嘗試使用GetView.findViewById錯誤無法解析方法GetView嘗試僅使用findViewById錯誤無法解析findViewById(int)

 package com.example.user.myapplication.Tabs; import android.animation.Animator; import android.animation.ValueAnimator; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.LinearLayout; import com.example.user.myapplication.R; public class Hotel extends Fragment { LinearLayout mLinearLayout; LinearLayout mLinearLayoutHeader; ValueAnimator mAnimator; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v =inflater.inflate(R.layout.hotel_frag,container,false); return v; 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; } private void expand() { //set Visible mLinearLayout.setVisibility(View.VISIBLE); /* Remove and used in preDrawListener 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()); */ mAnimator.start(); } private void collapse() { int finalHeight = mLinearLayout.getHeight(); ValueAnimator mAnimator = slideAnimator(finalHeight, 0); mAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationEnd(Animator animator) { //Height=0, but it set visibility to GONE mLinearLayout.setVisibility(View.GONE); } @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); mAnimator.start(); } private ValueAnimator slideAnimator(int start, int end) { ValueAnimator animator = ValueAnimator.ofInt(start, end); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { //Update Height int value = (Integer) valueAnimator.getAnimatedValue(); ViewGroup.LayoutParams layoutParams = mLinearLayout.getLayoutParams(); layoutParams.height = value; mLinearLayout.setLayoutParams(layoutParams); } }); return animator; } }

請在 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;
}

嘗試這個

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM