涉及多个Fragment,点击其中一个fragment中的“点击登录”按钮,跳转到“登录”界面时,出现程序闪退现象

问题说明:我想实现从当前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项目中,这只是简单的一个小问题,但是解决了蛮长时间,希望以后可以慢慢积累,提高自己解决实际问题的能力

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值