たとえば、JavaとKotlinアクティビティのBottomNavigationView機能を持つBaseActivity(Java)を維持する方法があるかどうかを知りたいと思います。将来的には、新しいアクティビティがKotlinで開発されたので、(いくつかの)JavaアクティビティをKotlinに変えようと考えています。 問題は、Kotlinがnullとして再生され、BottomNavigationViewの読み込みがJavaのようにループが維持された後に行われるため、JavaがBottomNavigationViewを正しく作成できることです。 もう1つの試みは、Java BaseActivityをKotlinに変えようと試みることでしたが、さまざまなJavaアクティビティの操作を壊しました。あなたのサブクラスのそれぞれであなたの基底クラスへUnbinder
JavaでBaseActivityをKotlinアクティビティと互換性を維持する
protected Unbinder mUnbinder;
そしてを追加
class KotlinActivity : BaseActivity() {
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my_wishes_list)
ButterKnife.bind(this)
//bottomNavigationMenu is null and lost all configurations from the BaseActivity
bottomNavigationMenu.menu.getItem(0).isChecked = true
}
}
public class BaseActivity extends AppCompatActivity {
@BindView(R.id.bottom_navigation_menu)
protected BottomNavigationView bottomNavigationMenu;
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
setupBottomMenu();
}
private void setupBottomMenu() {
if (bottomNavigationMenu != null) {
BottomNavigationViewHelper.removeShiftMode(bottomNavigationMenu);
bottomNavigationMenu.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
setupBottomMenuListener(item);
return true;
}
});
}
}
private void setupBottomMenuListener(@NonNull MenuItem item) {
switch (item.getItemId()) {
//...
}
}
}