当我不通过 rootView 视图访问片段中的 Button 视图时出现 NullPointerException
NullPointerException when I don't access the Button view in my fragment through rootView view
当我没有通过 rootView 视图访问片段中的 Button 视图时,为什么会出现 NullPointerException?
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
Button buttonClick =(Button)rootView.findViewById(R.id.button);
buttonClick.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
//Do something when button is clicked
}
});
您正在膨胀到变量 rootView,因此获得按钮的唯一方法是通过您的变量。
在片段中声明按钮
Button buttonClick;
然后在Fragment中写入下面的代码。
buttonClick = (Button) rootView.findViewById(R.id.button);
buttonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
findViewById() 在调用视图的内容上查找请求的视图。
因此,如果您从 activity 调用它,它将在您使用 setContentView() 设置的 contentView 上查找视图,这就是它返回 null 的原因。
您需要在包含所需视图的视图上调用 findViewById()。
希望对您有所帮助。
您可以在片段中初始化按钮 onClick()
像这样初始化
public class Yourclassname extends Fragment implements View.OnClickListener
{
Button button1
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootview=inflater.inflate(R.layout.postpaid, container, false);
button1 = (Button) rootview.findViewById(R.id.button);
button1.setOnClickListener(this);
return rootview;
}
public void onClick(View view)
{
//Do something when button is clicked
}
}
当我没有通过 rootView 视图访问片段中的 Button 视图时,为什么会出现 NullPointerException?
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
Button buttonClick =(Button)rootView.findViewById(R.id.button);
buttonClick.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
//Do something when button is clicked
}
});
您正在膨胀到变量 rootView,因此获得按钮的唯一方法是通过您的变量。
在片段中声明按钮
Button buttonClick;
然后在Fragment中写入下面的代码。
buttonClick = (Button) rootView.findViewById(R.id.button);
buttonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
findViewById() 在调用视图的内容上查找请求的视图。
因此,如果您从 activity 调用它,它将在您使用 setContentView() 设置的 contentView 上查找视图,这就是它返回 null 的原因。
您需要在包含所需视图的视图上调用 findViewById()。
希望对您有所帮助。
您可以在片段中初始化按钮 onClick()
像这样初始化
public class Yourclassname extends Fragment implements View.OnClickListener
{
Button button1
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootview=inflater.inflate(R.layout.postpaid, container, false);
button1 = (Button) rootview.findViewById(R.id.button);
button1.setOnClickListener(this);
return rootview;
}
public void onClick(View view)
{
//Do something when button is clicked
}
}