Простой пример (как предложил dave.c):
public class BaseActivity extends Activity {
public void onClickButton1(View view) {
Toast toast = Toast.makeText(this, "Button 1 clicked", Toast.LENGTH_SHORT);
toast.show();
}
public void onClickButton2(View view) {
Intent i = new Intent(this, MyFirstActivity.class);
startActivity(i);
}
public void onClickButton3(View view) {
Intent i = new Intent(this, MySecondActivity.class);
startActivity(i);
}
}
Ваша активность MyFirstActivity будет выглядеть следующим образом:
public class MyFirstActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_first_activity);
}
}
Ваша активность MySecondActivity:
public class MySecondActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_second_activity);
}
}
В макете my_first_activity.xml вы включаете:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text="My first activity" android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<include android:layout_width="fill_parent" android:layout_height="wrap_content"
layout="@layout/bottom_bar" />
</LinearLayout>
В my_second_activity.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text="My second activity" android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<include android:layout_width="fill_parent" android:layout_height="wrap_content"
layout="@layout/bottom_bar" />
</LinearLayout>
В bottom_bar вы определяете кнопки с обработчиками onClick:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button android:text="Button1" android:id="@+id/button1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:onClick="onClickButton1"/>
<Button android:text="Button2" android:id="@+id/button2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:onClick="onClickButton2"/>
<Button android:text="Button3" android:id="@+id/button3" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:onClick="onClickButton3"/>
</LinearLayout>
Youможет столкнуться с проблемами при использовании этого дизайна.Например, если вы хотите использовать ListView в некоторых ваших действиях и хотите создать подкласс ListActivity (еще один пример - TabActivity), это будет невозможно.
Другой способ заключается в создании подкласса Activity и определении одного общего обработчика, который обрабатываетСобытия onClick.В этом случае вам нужно будет определить обработчики onClick в каждом действии и вызвать соответствующие методы общего обработчика.
Еще один способ - использовать TabHost и TabActivity.