多个活动上的相同按钮

时间:2011-05-01 14:24:27

标签: android android-activity global

对,我在每个活动中都有一个完全位于同一位置的登录按钮,此刻我有20个活动,但很快就会上升很多,我真的不想复制和粘贴相同的为每个活动编写代码,所以我正在寻找一个简单有效的解决方案来处理onClick事件,该事件将在整个应用程序中全局工作。

例如,如果用户A点击了活动1上的登录按钮并登录,则会显示他已登录活动2和3,依此类推..直到他们退出。

登录按钮在整个应用程序中具有相同的ID,即“@ + id / signIn”

在每个活动开始时调用单个函数会更容易吗?我认为不会有效地使用处理能力等吗?!

非常感谢任何建议和/或指导。谢谢:))

2 个答案:

答案 0 :(得分:10)

您无法避免以任何方式在所有活动中实现该侦听器。但你可以用更有条理的方式做到这一点:

您可以为应用程序(/res/layout/header.xml)编写自定义标题布局,其中您具有“登录”按钮,其中包含单击侦听器集(指向onSignInClicked方法):

android:onClick="onSignInClicked"

然后将此标题包含在每个活动布局中:

<include android:id="@+id/header" layout="@layout/header" />

您还可以创建一个包含onSignInClicked方法声明的界面,并通过实现该界面的所有活动强制它们定义onSignInClicked方法的主体。

你实际在那里做的事情也可以包含在

  • 全局内部的静态方法 可访问的类,或
  • 内部的参数化方法 您的Application扩展程序。

所以在你的所有活动中,这个方法可以是:

public static void onSignInClicked(View view)
{
    // static method with call with reference to the current activity
    SignInHelper.doSignIn(this);
}

public static void onSignInClicked(View view)
{
    // global method in your `Application` extension
    // with reference to the current activity
    ((MyApplication)getApplicationContext()).doSignIn(this);
}

如果您选择第二种方式,请不要忘记通过设置androidManifes.xml标记的name属性来更新application

<application android:name=".MyApplication" [...]

答案 1 :(得分:0)

您可以将按钮创建为custom view.