你好,我有一个ViewPager的片段:
package my.test.myapplication;
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.widget.Button;
public class Fragment1 extends Fragment {
private Button btn;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// point A
return inflater.inflate(R.layout.frag1,container,false);
}
}
当我在A点下添加它时,它会出现一条错误消息:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// point A
btn = (Button) findViewById(R.id.button);
return inflater.inflate(R.layout.frag1,container,false);
}
错误消息:
Cannot resolve method 'findViewById(int)'
我能做什么?
如果要访问任何视图,则具有视图对象来访问它。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag1,container,false);
btn = (Button)view.findViewById(R.id.button);
return view;
}
在OnViewCreated()
方法中尝试以下代码:
btn = (Button) view.findViewById(R.id.button);
试试看
view.findViewById(R.id.expandable);
Fragment
不是Activity
的子类。
您必须在Activity
对象上调用findViewById(R.id.*id*);
。
请参阅 API。
你可以这样尝试:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.frag1, container, false);
btn = (Button)rootView.findViewById(R.id.button);
return rootView ;
}
尝试一下,如果要在fragment
中绑定控件,则必须首先使用LayoutInflater
将布局放入view
,而不是借助该view
您可以像这样绑定所有控件
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.frag1,container,false);
btn = (Button) rootView.findViewById(R.id.button);
return rootView ;
}