我希望在每个页面都有一个通用的底部菜单栏。我设计了底部栏,但我对菜单图标的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