当我在Fragment内的Button上使用onClickListener并使用intent打开一个Activity时,它会产生NullPointerException。
这是我的代码
public class TabFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tabs, container, false);
Button tab1=(Button) getView().findViewById(R.id.tab1upgradeCost);
tab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), MainActivity.class);
getActivity().startActivity(i);
}
});
return rootView;
}
}
答案 0 :(得分:2)
我认为问题在于你的观点是getView可能会返回null。
用这个代替你的代码。 我没有测试你的代码但可能有帮助。
public class TabFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tabs, container, false);
Button tab1=(Button) rootView.findViewById(R.id.tab1upgradeCost);
tab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), MainActivity.class);
getActivity().startActivity(i);
}
});
return rootView;
}
}
答案 1 :(得分:2)
您获得NLP是因为tab1未使用右视图初始化
不要使用
Button tab1=(Button) getView().findViewById(R.id.tab1upgradeCost);
在onCreateView()getView()
中将返回null,因为仍然没有启动片段。
改为使用
Button tab1=(Button) rooView.findViewById(R.id.tab1upgradeCost);
答案 2 :(得分:1)
更改
Button tab1=(Button) getView().findViewById(R.id.tab1upgradeCost);
到
Button tab1=(Button) rootView.findViewById(R.id.tab1upgradeCost);
答案 3 :(得分:-1)
startActivity(new Intent(getActivity(),Actvty_Ground.class));