Лучшей практикой Android для создания Fragment
является использование статического заводского метода и передача аргументов в Bundle
через setArguments()
.
В Java это делается примерно так:
public class MyFragment extends Fragment {
static MyFragment newInstance(int foo) {
Bundle args = new Bundle();
args.putInt("foo", foo);
MyFragment fragment = new MyFragment();
fragment.setArguments(args);
return fragment;
}
}
В Котлине это преобразуется в:
class MyFragment : Fragment() {
companion object {
fun newInstance(foo: Int): MyFragment {
val args = Bundle()
args.putInt("foo", foo)
val fragment = MyFragment()
fragment.arguments = args
return fragment
}
}
}
Это имеет смысл поддерживать взаимодействие с Java, поэтому его все равно можно вызвать через MyFragment.newInstance(...)
, но есть ли более идиоматический способ сделать это в Kotlin, если нам не нужно беспокоиться о Java-взаимодействии?