我希望在每個頁面都有一個通用的底部菜單欄。我設計了底部欄,但我對菜單圖標的onClick事件感到困惑。是否必須爲每個活動類編寫onClick監聽器的代碼,以便使每個頁面都可見並可以工作,或者如果有任何其他方式,我可以創建一個與每個頁面一致的公共底部欄,而無需在每個頁面中編寫菜單代碼活動課。Android底部條形菜單onclick動作
我試圖通過創建一個基類並將其擴展到其他子類中,如dave.c在後0123'中所述的 ,但它並不適用於我。 請建議。謝謝。
我希望在每個頁面都有一個通用的底部菜單欄。我設計了底部欄,但我對菜單圖標的onClick事件感到困惑。是否必須爲每個活動類編寫onClick監聽器的代碼,以便使每個頁面都可見並可以工作,或者如果有任何其他方式,我可以創建一個與每個頁面一致的公共底部欄,而無需在每個頁面中編寫菜單代碼活動課。Android底部條形菜單onclick動作
我試圖通過創建一個基類並將其擴展到其他子類中,如dave.c在後0123'中所述的 ,但它並不適用於我。 請建議。謝謝。
簡單的例子(如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>
你可能會碰到採用這種設計的問題。例如,當你想在你的一些活動中使用ListView並且你想要ListActivity的子類時(TabActivity是另一個例子),這是不可能的。
另一種方法是子類化Activity並定義一個處理onClick事件的公共處理函數。在這種情況下,您需要在每個活動中定義onClick處理程序並調用相應的常用處理程序的方法。
另一種方法是使用TabHost和TabActivity。
在這個按鈕不工作在下一個頁面,onClick沒有執行任何操作,我嘗試了Toast和意圖操作。 – Neetesh 2011-05-19 08:30:42
我編輯了答案,我已經創建了示例項目並測試了代碼,並且它工作正常 – Ludevik 2011-05-19 09:23:15