多个活动上的相同按钮
右键我有一个登录按钮位于每个活动的完全相同的地方,我现在有20个活动,但会很快升高很多,而且我并不想成为复制和粘贴相同的代码到每个活动,所以我正在寻找一个简单,高效的解决方案来处理onClick事件,这将在整个应用程序的全球工作。多个活动上的相同按钮
例如,如果用户A单击活动1上的登录按钮并登录,它将显示他已在活动2和3中登录等等,直到他们注销为止。
登录按钮具有在整个应用程序,它是“@ + ID /签到”同一ID
会是更容易在每次活动开始调用一个函数?我认为这不会有效地利用处理能力等吗?!
任何建议和/或指导将不胜感激。谢谢:)
你不能避免在实现你所有的活动,该侦听器以两种方式。但是你可以做一个有点更有组织的方式:
你可以写你的应用程序(/res/layout/header.xml
)自定义标题布局,在其中您有一个点击监听器中的“登录”按钮(指向onSignInClicked
法):
android:onClick="onSignInClicked"
然后你包含这个头给每个活动布局:
<include android:id="@+id/header" layout="@layout/header" />
你也可以创建一个包含一个onSignInClicked
方法声明的接口,并通过所有的Activiti在实施该界面时,您可以强制他们定义方法的正文。
你居然在那里做什么也可以被包装成
- 一个静态方法全球 访问类的内部,或
- 一个良好的参数化方法内 您
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" [...]
不客气,很高兴你能做到! :) – rekaszeru 2011-05-02 10:50:54
纯粹出于好奇,为什么你的应用需要20个完全相同的按钮? – 2011-05-01 15:07:50
因为每个活动的顶部都有一个标题栏,其中包含徽标和用户名等 – 2011-05-01 16:21:15
是否有一个原因,您不能只使用相同的活动并替换标题栏(或替换徽标和用户名)为每一个onCreate()? – 2011-05-02 16:51:40