为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕妹3146593 2021-09-03 16:51:30
目前我在 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);    }}
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

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

        }

    }

}


查看完整回答
反对 回复 2021-09-03
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

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()


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信