android - 如何从 java 片段类中调用 kotlin 片段
问题描述
这是 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 类
我已经使用了 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;
}
这是科特林课程
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 类?
解决方案
您必须致电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;
}
}
推荐阅读
- python - 个人项目代码问题(替换字符)
- python - 让 Selenium 从 .txt 文件中获取 URL 列表
- php - 如何根据while循环和数据库添加复选框
- react-native - 如何在 Listview 组件中使用条件?
- javascript - 如何在javascript中将对象数组附加到卡片元素
- c++ - extern 模板实际上是如何生成代码的?
- git - git hook not behaving consistently between linux and windows
- python - 如何删除标题,转置数据并将 100 个文件组合成一个新的 csv 文件?
- javascript - Reactjs hiding and displaying start screen by using hooks instead of classes
- phpmyadmin - xamp port 8080 server