问题说明:我想实现从当前fragment_me中点击一下登录按钮,跳转到登录界面,所以我在MeFragment.java里的onCreate()方法中为TextView控件添加监听事件。但在实际运行中,我点击“Me”之后,会出现闪退现象。
错误:空指针异常
出现闪退的代码如下:
public class MeFragment extends Fragment {
private TextView textView;
private Button button;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textView=(TextView)getActivity().findViewById(R.id.text1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(getActivity(),LoginActivity.class);
startActivity(intent);
}
});
}
后来发现,Fragment其实只是简单的框架,跳转界面的主体是活动,因此必须先用
onActivityCreated()方法
构建活动,再对Fragment中的TextView控件进行实例化,代码如下:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// return super.onCreateView(inflater, container, savedInstanceState);
View view=inflater.inflate(R.layout.fragment_me,container,false);
return view;
}
//视图控件请在这里实例化
//活动创建之后才能对fragment中的控件进行实例化,对控件的实例化、对控件的操作要在这个活动中完成
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
textView=(TextView)getActivity().findViewById(R.id.text1);
// button=(Button)getActivity().findViewById(R.id.button1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(getActivity(),LoginActivity.class);
startActivity(intent);
}
});
}
再次运行程序,跳转到fragment_me之后,点击登录,跳转到如下界面
在做二手市场APP项目中,这只是简单的一个小问题,但是解决了蛮长时间,希望以后可以慢慢积累,提高自己解决实际问题的能力