как вызвать фрагмент kotlin из класса java фрагмента - PullRequest
0 голосов
/ 23 октября 2019

Это код ActivityUtil

        public class ActivityUtil {

        public static void addFragmentToActivity(@NonNull FragmentManager fragmentManager,
                                                 @NonNull Fragment fragment, int frameId, String fragmentTag) {

            //Fragment fragment1=fragmentManager.findFragmentByTag(fragmentTag);
            Preconditions.checkNotNull(fragmentManager);
            Preconditions.checkNotNull(fragment);
            FragmentTransaction transaction = fragmentManager.beginTransaction();

                transaction.replace(frameId, fragment, fragmentTag);
                transaction.addToBackStack(fragmentTag);
                transaction.commit();


        }
        }

Это основной класс фрагмента, здесь я хочу добавить / заменить фрагмент транзакции с использованием фрагмента kotlin, т. Е. Класс CameraFragment

I Я уже использовал класс Photofragment, теперь яхотите изменить фрагмент kotlin, как добиться этого сценария?

    public class ExpLotBcodeFragment extends Fragment{
     public ExpLotBcodeFragment() {      
        }  
          @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.setRetainInstance(true);
              }
        @SuppressLint("ClickableViewAccessibility")
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            View root = inflater.inflate(R.layout.fragment_exp_lot_bcode, container, false);


            }


        @OnClick({R.id.scan})
        public void onClick(View view) {
                switch (view.getId()) {
                case R.id.scan:
                     //here i want to add kotlin call CameraFragment   class

                 //This is old call 
                ActivityUtil.addFragmentToActivity(getFragmentManager(), 
                photoFragment, R.id.frame_content, "photoFragment"); 

                      break;
    }

Это класс kotlin

class CameraFragment : Fragment() {   

  companion object {

    fun newInstance(): CameraFragment {
      return CameraFragment ()
    }
  }


  override fun onCreateView(inflater: LayoutInflater, 
                            container: ViewGroup?, 
                            savedInstanceState: Bundle?): View? {
    return inflater.inflate(R.layout.fragment_exp_lot_bcode, container, false)
  }

}

Из класса CameraFragment я хочу добавить / заменить класс ExpLotBcodeFragment?

1 Ответ

0 голосов
/ 24 октября 2019

Либо вам нужно позвонить CameraFragment.Companion.newInstance(), либо напрямую позвонить new CameraFragment(), чтобы получить instance из CameraFragment. Проверьте ниже:

@OnClick({R.id.scan})
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.scan:
            CameraFragment cameraFragment = CameraFragment.Companion.newInstance();
            ActivityUtil.addFragmentToActivity(getFragmentManager(),
                    cameraFragment, R.id.frame_content, "cameraFragment");
            break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...