涉及多個Fragment,點選其中一個fragment中的“點選登入”按鈕,跳轉到“登入”介面時,出現程式閃退現象
阿新 • • 發佈:2018-12-19
問題說明:我想實現從當前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專案中,這只是簡單的一個小問題,但是解決了蠻長時間,希望以後可以慢慢積累,提高自己解決實際問題的能力