申し訳ありません私の質問が公表されても申し訳ありませんが、私は答えを見つけることができません。 rxjavaをライフサイクルにバインドするためにrxlifecycle-navi
ライブラリを使用したいので、NaviActivity
クラスを拡張する必要があります。問題は、NaviActivity
クラスがActivity
に拡張されており、toolbar
のためにAppCompatActivity
を拡張する必要があるということです。ライブラリのソースコードを変更せずに、このエレガントな方法を実現するにはどうすればよいですか?私はAppCompatDelegate
経由でそれを行うにはarticleを見つけましたが、十分に柔軟に見えません。私はそれが一般的な問題だと思う、私は2つのクラスを拡張できません。AppCompatActivityへのアクティビティの延長
public abstract class BaseActivity extends NaviActivity implements AppCompatCallback {
private final ActivityLifecycleProvider provider = NaviLifecycle.createActivityLifecycleProvider(this);
public AppCompatDelegate delegate;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButterKnife.bind(this);
delegate = AppCompatDelegate.create(this, this);
delegate.onCreate(savedInstanceState);
}
@Override
public void onSupportActionModeStarted(ActionMode mode) {
}
@Override
public void onSupportActionModeFinished(ActionMode mode) {
}
@Nullable
@Override
public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) {
return null;
}}
そして、別のクラス:現時点で
マイBaseActivity
public class CarWashesActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_car_washes);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
delegate.setSupportActionBar(toolbar);
delegate.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}}
の "NaviAppCompatActivity" のための
検索それは良い解決策、THXですが、他がある場合、私は思っていました。 Bcsは柔軟ではありません2、ライブラリのソースコードが変更されるか、単にソースコードを見ることができない場合はどうなりますか? –
うーん... 'trello/navi'ライブラリは既に' NaviAppCompatActivity'をサポートしています(https://github.com/trello/navi/blob/master/navi/src/main/java/)。 com/trello/navi/component/support/NaviAppCompatActivity.java)をライブラリ自体に追加します。あなたは私が行ったコピーをする必要はありません。 – EpicPandaForce