【问题标题】:Fragment onCreateView Calls Again when I call fragment function from Main Activity?当我从 Main Activity 调用片段函数时,片段 onCreateView 再次调用?
【发布时间】:2018-07-07 17:25:39
【问题描述】:

实际上我的问题是我想在按钮 clickListner 上将字符串从主活动发送到我的片段,但是当我从主活动调用片段函数时,片段的 onCreateView 再次调用并且一切都再次初始化。请指导我如何避免这个问题谢谢。

这是我的 MainActivity 代码:

ThirdFragment thirdFragment=new ThirdFragment();
                            FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction().add(R.id.thirdfragment,thirdFragment,null);
                           fragmentTransaction.commitNow();
                            ThirdFragment fragment = (ThirdFragment) getSupportFragmentManager().findFragmentById(R.id.thirdfragment);
                           if(fragment!=null) {
                               fragment.Subcategories(text);

                           } 

这里是片段函数代码:

public void Subcategories(String text){

    Log.d(TAG, "Subcategories: fragment calling "+text);

        mAPIService.searchcategory("2",text).enqueue(new Callback<ArrayList<DataStored>>() {
            @Override
            public void onResponse(Call<ArrayList<DataStored>> call, Response<ArrayList<DataStored>> response) {
               myRecyclerAdapter.addItems(response.body());
            }
            @Override
            public void onFailure(Call<ArrayList<DataStored>> call, Throwable t) {
                myRecyclerAdapter.addItems(null);


            }
        });


}

【问题讨论】:

  • 我对你的问题有些困惑。你只需要调用片段的方法还是需要放置片段?
  • 不只是想调用fragment的方法

标签: android android-fragments android-activity fragment-oncreateview


【解决方案1】:

试试这样;`

 ThirdFragment thirdFragment=new ThirdFragment();
    FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction().replace(R.id.thirdfragment,thirdFragment,null);
                               fragmentTransaction.commitNow();
                                ThirdFragment fragment = (ThirdFragment) getSupportFragmentManager().findFragmentById(R.id.thirdfragment);
                               if(fragment!=null) {
                                   fragment.Subcategories(text);

                               } `

【讨论】:

  • 尝试使用 commit() 而不是 commitNow(); .如果它不起作用,请使用您之前加载的片段 remove() 方法将其删除。使用 add() 方法添加新加载的片段。它需要工作。
  • 现在我收到此错误:尝试在空对象引用上调用虚拟方法 'void android.support.v4.app.Fragment.setNextAnim(int)'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多