私は同じツールバーで3つのアクティビティを持っています。私は各アクティビティでコードをコピーしないようにしたいと思います。私は、すべてのレイアウトに<include>
タグを使用して、ツールバーの同じレイアウトを再利用できることを知っています。今度は、すべてのアクティビティでツールバーの各ボタンのイベントハンドラを共有したいと思います。私はtoolbarActivity
extends Activity
クラスと3つのアクティビティextends toolbarActivity
を作成することを考えています。したがって、onCreateメソッドでは、base.OnCreate
を呼び出すと、すべてのイベントハンドラが定義されます。しかし、SetContentLayout
はまだ呼び出されていないので、base.OnCreate
はボタンを見つけられません。 3つのアクティビティに異なるレイアウトがあることを忘れないでください。 OnCreateメソッド内のすべてのイベントハンドラをすべてのアクティビティにコピーしたり、一部の機能をオーバーライドするのを避けるために、コードを再利用する最善の方法を知っていますか?androidのコードの再利用性
答えて
Androidはモバイルデバイスで使用されるため、開発時にはAndroidデバイスのサイズとサイズを知ることはできません。大規模なデバイスでは、多くのUI要素が適合します。より小さいデバイスでは、UI要素が少なくて済みます。あなたの質問はこのジレンマに関係しているので、多くの可能な答えがあります。論理的にはコードが動作するためにはソース内に存在していなければなりません。つまり、同じ "ツールバー"の多くのバージョンで終わるか、または "外部"ツールバーを参照/参照できるので、悪い解決策を切り取って貼り付けることができます。別々のソースファイルを持っているように、断片が心に浮かび上がる。 UIソースファイルはペアとして考えることができます。動的要素の場合はJava、静的要素の場合はxml。つまり、要約すると、ツールバーを実装した外部フラグメントを参照するだけです。
アクティビティの参照に関連付けられたボタンやその他のレイアウトの名前付け規則をそのまま使用する場合は、問題はありません。
たとえば、あるレイアウトに '@ + id/login_button'がある場合、次のレイアウトで同じタイプのボタンに同じ表記を使用するだけで問題ありません。
他のすべてのアクティビティが拡張する基本アクティビティを定義し、クリックリスナ(またはボタンの押下を待機するために使用するインターフェイス)を実装することができます。クリックしたビューのIDを確認して、必要なロジックを実行するためのコールバックを提供することができます。
public class BaseActivity extends Activity implements OnClickListener {
public void onCreate() {
myBtn.setOnClickListener(this);
}
public void onClick(View v) {
if (R.id.my_btn == v.getId()) {
onFoo();
}
}
protected void onFoo() {
// TODO handle foo
}
}
異なる動作を行う必要がある場合は、サブクラスのメソッドをオーバーライドできます。
public class DifferentActivity extends BaseActivity {
@Override protected void onFoo() {
super.onFoo()
// TODO handle foo differently
}
}
BaseActivityのmyBtnは定義されていません。コンテンツレイアウトをまだ設定していないからです。これが私の問題です。 –
onPostCreate()でリスナーを設定できます。 – fractalwrench
- 1. c#コードの再利用性
- 2. Androidのコールバックとコードの再利用
- 3. コードの再利用
- 4. VLOOKUPマクロの再利用性
- 5. コードの再利用、スレッドクラス
- 6. Springコードの再利用
- 7. Android用データベースの再利用コードの書き方
- 8. QML依存性/再利用性(静的コード)チェッカー
- 9. Androidソケットの再利用
- 10. Androidスレッドクラスの再利用
- 11. viewControllerの一般的なビュー - コードの再利用性
- 12. @NgModule、@Injectable @Componenet:依存性注入とコードの再利用
- 13. コンポジットコンポーネントのアクション属性の再利用?
- 14. Androidコードとレイアウトを再利用するためのベストプラクティス
- 15. プロジェクト間でのコードの再利用
- 16. asp.netでのJavaScriptコードの再利用
- 17. 複数のスーパークラスとコードの再利用
- 18. iOSアプリケーションでのコードの再利用
- 19. ウェブアプリケーションプロジェクトのウェブサイトプロジェクトのコードを再利用
- 20. org.w3c.dom.Nodeの並行性と再利用
- 21. セル再利用性の問題
- 22. ビューアページのAndroidビューの再利用
- 23. djangoとappengineモデルクラス間のコード再利用
- 24. 再利用可能なコードのアーキテクチャ
- 25. Hartl Railsチュートリアルのコードを再利用
- 26. MSILコード内の可変スコープ/再利用
- 27. pythonクラスの継承コードを再利用
- 28. 例外処理でのコード再利用
- 29. 角型コードの再利用戦略
- 30. Android DefaultHttpClient接続の再利用
これはT – zgc7009
のフラグメントです。なぜ3つのフラグメントで1つのアクティビティを使用しないのですか? – SMR