猿问

使用 Kotlin 从片段 A 调用片段 B 的方法

目前我在 java 环境中工作并尝试开始使用 kotlin。我的第一堂课是 Java 类型,下一堂课是 Kotlin 类型。我的第一堂课如下


public class FragmentDashboard extends BaseFragment {

Button btnLaunchComplaint;

TextView tvSupport;


    public static FragmentDashboard getInstance(Bundle bundle, String title, int icon) {

        FragmentDashboard fragment = new FragmentDashboard();

        fragment.setArguments(bundle);

        fragment.setFragmentTitle(title);

        fragment.setFragmentIconId(icon);

        return fragment;

    }


    @Override

    protected void initializeControls(View v) {

        btnLaunchComplaint = v.findViewById(R.id.btnLaunchComplaint);

        tvSupport = v.findViewById(R.id.tvSupport);


    }


    @Override

    protected int getLayoutResourceId() {

        return R.layout.fragment_dashborad_layout;

    }


    @Override

    protected void initializationBundle(Bundle bundle) {


    }


    @Override

    protected void attachListeners() {

        btnLaunchComplaint.setOnClickListener(this);

        tvSupport.setOnClickListener(this);

    }


    @Override

    protected void initializeData() {

        animateViews();

    }


    @Override

    public void onClick(View view) {

        switch (view.getId()) {

            case R.id.btnLaunchComplaint:

                FragmentForm fragmentForm = FragmentForm.getInstance(new Bundle(), "", -1);

                replaceFragment(fragmentForm, false, false, true, "");

                break;

            case R.id.tvSupport:

                FragmentSupport fragmentSupport = FragmentSupport.getInstance(new Bundle(), "", -1);

                replaceFragment(fragmentSupport, false, false, true, "");

                break;



        }

        super.onClick(view);

    }


    @Override

    public void onResume() {

        super.onResume();

        setNavigationTitle(getResources().getString(R.string.wasa_home));



    }


    private void animateViews() {

        Animation animateTopDown = AnimationUtils.loadAnimation(getActivity(), R.anim.left_in);

        btnLaunchComplaint.startAnimation(animateTopDown);

    }

}


慕妹3146593
浏览 155回答 2
2回答

噜噜哒

java 中的静态方法可以通过 kotlin 中的 @JvmStatic 注释转换为伴随对象方法:class FragmentRegisterComplaint : BaseFragment() {    companion object {        @JvmStatic        fun getInstance(bundle: Bundle, title: String, icon: Int): FragmentRegisterComplaint {            val fragment = FragmentRegisterComplaint()            fragment.arguments = bundle            fragment.setFragmentTitle(title)            fragment.setFragmentIconId(icon)            return fragment        }    }}

慕雪6442864

Kotlin 已经用 object 和 comapnion object 替换了 static您可以在类内的伴生对象中将您想要的内容定义为静态。像下面companion object {        fun getInstance(bundle: Bundle, title: String, icon: Int): FragmentRegisterComplaint {            val fragment = FragmentRegisterComplaint()            fragment.arguments = bundle            fragment.setFragmentTitle(title)            fragment.setFragmentIconId(icon)            return fragment        }    }}现在在你的java类中你可以使用它作为YorFragmentName.companion.method()
随时随地看视频慕课网APP

相关分类

Java
我要回答