java - FragmentTransaction 正在抛出空引用
问题描述
我有加载器片段,我正在调用另一个片段。loader fragment
一切正常,但突然我的片段加载器给了我一个错误。在加载器片段中,我显示进度条 5 秒,之后将显示另一个片段。
这是我的代码:-
加载器片段.java
package com.example.user.attendance;
public class Loader_fragment extends Fragment {
AVLoadingIndicatorView Loader;
Runnable runnable;
Handler handler;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
Timer timer;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View loadder_fragment=inflater.inflate(R.layout.fragment_loader_fragment, container, false);
Loader=(AVLoadingIndicatorView)loadder_fragment.findViewById(R.id.loder_login);
handler=new Handler();
runnable=new Runnable() {
@Override
public void run() {
Loader.setVisibility(View.INVISIBLE);
timer.cancel();
fragmentManager=getFragmentManager();
fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator
.slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
Home_Screen home_screen=new Home_Screen();
fragmentTransaction.replace(R.id.Home_screen_fragment,home_screen);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
};
timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(runnable);
}
}, 5000,5000);
/* if(Loader.setVisibility(View.INVISIBLE)==1){
}*/
return loadder_fragment;
}
}
Logcat 显示错误:-
Process: com.example.user.attendance, PID: 1200
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentTransaction android.app.FragmentManager.beginTransaction()' on a null object reference
at com.example.user.attendance.Loader_fragment$1.run(Loader_fragment.java:44)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7402)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
为什么它在片段中显示空对象引用。
解决方案
不要View
在onCreateView
. 相反,将其移至onViewCreated
方法。原因:您的片段尚未设置视图。
此外,更换:
fragmentManager = getFragmentManager();
具有以下内容:
fragmentManager = getChildFragmentManager();
推荐阅读
- c++ - 如何获取给定监视器上存在的所有窗口的 HWND?
- ruby-on-rails - 如何保留数组的一部分并形成一个新数组?
- jqgrid - 我们可以通过更改免费 jqgrid 4.15.4 中的任何一个选定值来更新多个下拉值吗
- vba - 改进现有的 VBA 代码以更快地复制文件
- configuration - Serilog MSSqlServer 表架构
- java - 无法使用 Jackson 解析来自 xml 的元素列表
- reactjs - react.js 中 (someVar) => 和 (someVar) => {...} 有什么区别
- xml - Grails XML 转换器从文件中添加 XML
- c# - ASP Net MVC 使用全局变量在控制器之间传递数据
- ios - 使用谓词过滤需要很多时间