それぞれの方法は、再利用可能なユーザーインターフェイスを作成するために不可欠であり、それぞれ異なる用途があります。
まず、layoutsは、ユーザーインターフェイスの視覚的構造を定義するだけで、activitiesとfragmentsは、その視覚的構造がどのように動作するかを定義するコンポーネントです。これは、視覚的構造とユーザインタフェースの動作とを明確に分離する。
したがって、定義済みのビジュアル構造を再利用するために<include/>
タグが使用されます。このビジュアル構造は任意のレイアウトに含めることができますが、各アクティビティーまたはフラグメントは、ビジュアル構造が個別に動作する方法を定義できます。
再利用可能な動作を作成するには、Activity
をサブクラス化できます。例えば; FragmentActivity
はActivity
クラスで定義された動作を保持しますが、1つまたは複数のフラグメントを格納する機能を追加します。 FragmentActivity
をサブクラス化するクラスでは、これらの動作もそれぞれ保持されます。
フラグメントは、Activity
の再利用可能セグメントとして開発され、独自の視覚的構造と動作を定義することができます。したがって、Activity
のセクションのビジュアルな構造と動作の両方を再利用できるようにするには、Fragment
を作成してください。フラグメントはサブクラス化することもできます。これを使用して、拡張クラスのビジュアル構造、ビヘイビア、またはその両方を変更できます。
これらは、再利用可能なインターフェイスを作成する唯一の方法ではありません。再利用可能なリソース、ビュー、スタイルまたはアニメーションを定義して、モジュラーユーザーインターフェイスを作成できます。ニーズに合わせてこれらのさまざまなコンポーネントを活用する方法を学ぶことは、Android開発(および一般的な開発)の大きな部分です。
最後に、私はあなたのポストスクリプトに対処します。ヘルプボタンを含む各ページの再利用可能なナビゲーションバーを作成する方法。うまくいけば、これは再利用可能なインターフェイスを作成する簡単な方法を示し、それはそのような困難な仕事ではないことを示します。
各
Activity
のための再利用可能な
ヘルプボタンを実装する1つの方法は、基本クラスにオプションメニューとして使用することができます
menu
リソースを作成することです
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_help" android:title="@string/action_help"
android:icon="@drawable/ic_help_white_24dp" android:orderInCategory="100"
app:showAsAction="ifRoom"/>
</menu>
はその後、このメニューリソースが内で膨張さを基本クラス基底クラスはSupport Library
の使用にするために(FragmentActivity
を拡張する)AppCompatActivity
を拡張:あなたは、基本クラスでヘルプボタンのクリックを処理するかこれで
public abstract class BaseActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.base, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_help:
dispatchHelpIntent();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
protected void dispatchHelpIntent() {
// Handle help options button
}
}
を、または子クラスのオーバーライドを持ってdispatchHelpIntent()
それを別々に扱います。子クラスのonCreateOptionsMenu()
とonOptionsItemSelected()
をオーバーライドして、メニューに項目を追加することもできます。 ヘルプボタンを保持するために、私がここで行うように、両方の方法でsuper
に電話してください。
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/app_bar"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
:
次に、再利用可能なナビゲーションバー(通常はアンドロイドでApp Barと呼ばれる)を作成するために、あなたがしなければならないすべては、各Activity
ためlayout
ファイルに含まれるlayout
ファイルを作成していますそして、あなたは<include/>
タグ使用することにより、他のActivity
でこのレイアウトを含めることができます。
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="match_parent"/>
<include layout="@layout/app_bar_base"/>
<!-- Activity content goes here -->
</android.support.design.widget.CoordinatorLayout>
をそして最後にとしてこれを追加しますBaseActivity
を拡張するすべてのActivity
に(「アクションバー」のAppバーの古い用語である):
public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setupActionBar();
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayShowTitleEnabled(true);
}
}
}
すべてのActivity
はそれぞれ、同じレイアウトを使用しない限り、ので、これはBaseActivity
で行うことができない理由がありますActivity
は、setContentView()
で独自のレイアウトを定義する必要があります。 Toolbar
は、コンテンツビューが設定されるまで利用できないため、この方法では各アクティビティでアクションバー(アプリケーションバー)を個別に設定する必要があります。
非常に徹底した、ありがとう! – CookieMonster