我从主要活动调用Fragment函数,但给我一个错误。错误提到下面请指导我

时间:2018-04-19 12:55:58

标签: android function api android-fragments

基本上我从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);
    }

请指导我如何删除此错误。

1 个答案:

答案 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");
}

我希望你这对你有所帮助..谢谢你