[英]Cannot resolve method 'findViewById(int)' in @Nullable fragment
[英]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.