How to transfere Kotlin fragment code "by lazy " to Java fragment?

40 Views Asked by At

I have kotlin working fragment. I want to rewrite it to Java.

I need to get viewModell inisialization in Java. How do i get it? I tried to use bitecode migration, but it gives a long code.

Kotlin file:

import android.os.Bundle
import ....

class AddDataFragment : Fragment() {

    private val viewModell: DetailViewModel by lazy {
        ViewModelProvider(this).get(DetailViewModel::class.java)
    }

  
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
 
        val v = inflater.inflate(R.layout.fragment_add_data, container, false)
        return v

    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

            var weight_number = editTextNumber2.text.toString().toDouble()
            val set_number = editSetNumber.text.toString().toInt()

//*************
// need this viewModell in Java !!!!!!
//*************
                viewModell.saveWeather(
                    weather = Weather(
                        City("M", 51.5, weight_number),
                        set_number,
                        1
                    )
                )
    }
}

Java file:

public class AddDataFragmentJava extends Fragment {

   
    private DetailViewModel sll;

    public synchronized DetailViewModel getSampleLifecycleListener() {
        if (sll == null) {
            sll = new ViewModelProvider(this).get(DetailViewModel.class);
           // sll = new ViewModelProvider(this).get(DetailViewModel::class.java);
        }
        return sll;
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_add_data_java, container, false);

        Button button = (Button) v.findViewById(R.id.buttonSaveData);


        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {


//*************
// How to get viewModell in Java?!!!!!!!
//**************

          /*      viewModell.saveWeather(
                        new Weather(
                                new City("M", 51.5, weight_number_double),
                                set_number,
                                1
                        )
                );
                */
            }
        });

        // Inflate the layout for this fragment
        return v;
    }

The bytecode transfare code is to complicated. So help me to understend how to do it in proper way.

0

There are 0 best solutions below