1. 程式人生 > >涉及多個Fragment,點選其中一個fragment中的“點選登入”按鈕,跳轉到“登入”介面時,出現程式閃退現象

涉及多個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專案中,這只是簡單的一個小問題,但是解決了蠻長時間,希望以後可以慢慢積累,提高自己解決實際問題的能力