如何在android中从BottomSheetDialogFragment调用片段

艾哈迈德 7A.4K

我发现从BottomSheetDialog 调用MainFragment 中的InsertSlider 非常困难。任何帮助和感谢

在底部工作表中:

public class AdminBottomSheetMainSave extends BottomSheetDialogFragment
{
 // One Method I don.t Know How To Work                  
 //((MainFragment)getContext()).InsertSliders(new ImageSlider(0,Name,Image,Price,Description));
 // Not Work Too
    MainFragment fragment = new MainFragment();
    fragment.InsertSliders(new ImageSlider(0,Name,Image,Price,Description));
}

在片段中:

public class MainFragment extends Fragment
{
public void InsertSliders(ImageSlider imageSlider)
{
    imageSliderViewModel.insert(imageSlider);
    Toast.makeText(getActivity(), "Done Insert"+imageSlider, Toast.LENGTH_SHORT).show();
}

什么是联系方式我如何获得InsertSliders

拉斯加

您应该使用接口在两个片段之间进行通信,并且您需要一个活动来实现该接口。

在您的bottomsheetdialogfragment 中定义接口:

public class AdminBottomSheetMainSave extends BottomSheetDialogFragment
{
    public Callback mCallback;

  public interface Callback{
   void insertSlider(ImageSlider slider);
  }

 @Override
  public void onAttach(Activity activity){
 super.onAttach(activity);
 mCallback = (Callback) activity;
}
 @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
//...

mCallback.insertSlider(new ImageSlider(0,Name,Image,Price,Description));
  }
}

然后在我们的案例 MainActivity 中的活动中实现回调接口并覆盖 inserSlider 方法:

 public class MainActivity extends AppCompatActivity implements Callback{
  MainFragment mainFragment;
  @Override
  public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //...
  if(savedInstanceState == null){
     mainFragment = MainFragment.newInstance(new Bundle()); // use real bundle here
     getSupportFragmentManager()
         .beginTransaction()
         .add(R.id.fragment_holder, mainFragment, "FragMain").commit();
   }
  }
 // Interface method
 @Override
 public void insertSlider(ImageSlider slider){
 if(mainFragment != null){
      mainFragment.insertSlider(slider);
    }
 }

现在在您的 MainFragment 中:

public class MainFragment extends Fragment{

  public static MainFragment newInstance(Bundle args){
      MainFragment fragment = new MainFragment();
      fragment.setArguments(args);
      return fragment;
  }

 //... Class overrides here onCreateView etc..

// define insertSlider method 
public void insertSlider(ImageSlider slider){

imageSliderViewModel.insert(slider);
Toast.makeText(getActivity(), "Done Insert"+slider, Toast.LENGTH_SHORT).show();
  }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章