基本上我从Main Activity调用片段函数。并且函数的目标是将api发送到服务器从解析器类获取数据和
将其设置为Fragment RecyclerView。
但它给了我一个错误并指向progressDialog = new ProgressDialog(this.context)
上的解析器类;错误如下。
java.lang.NullPointerException:尝试调用虚方法 “android.content.res.Resources $主题 空对象引用上的android.content.Context.getTheme()'
这是我在main活动中的代码,它是从fragment调用我的函数。
if(adapterPosition==0) {
SecondFragment secondFragment=new SecondFragment();
secondFragment.SearchCategoresFunction(text);
}
这是我在片段中的功能:
public void SearchCategoresFunction(final String searchTxt){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mparser = new SecondParseDataClass(getContext());
mparser.setOnDataRetrievalCallback(new OnDataRetrievalCallback() {
@Override
public void onDataRetrieval(ArrayList<DataStored> dataSet) {
dataStoredArrayList.addAll(dataSet);
myRecyclerAdapter.notifyDataSetChanged();
}
});
mparser.execute("http://192.168.3.10/fetchtext.php", "2",searchTxt);
}
}, 0);
}
请指导我如何删除此错误。
答案 0 :(得分:0)
片段为空,因此只会弹出错误,因此在调用函数之前,您将一个Id设置为片段,然后检查片段是否为空。请遵循以下方法。
将以下方法的片段添加到您的活动中..
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag("Second_Fragment");
if (fragment == null) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Bundle bundle = new Bundle();
fragmentTransaction.add(R.id.layout_container, SecondFragment.newInstance(bundle), "Second_Fragment").commit();
}
检查以下情况并调用该方法后
SecondFragment secondFragment = (SecondFragment) getSupportFragmentManager().findFragmentByTag("Second_Fragment");
if (secondFragment!=null) {
secondFragment. SearchCategoresFunction("String");
}
我希望你这对你有所帮助..谢谢你