你不能避免在实现你所有的活动,该侦听器以两种方式。但是你可以做一个有点更有组织的方式:
你可以写你的应用程序(/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" [...]
纯粹出于好奇,为什么你的应用需要20个完全相同的按钮? – 2011-05-01 15:07:50
因为每个活动的顶部都有一个标题栏,其中包含徽标和用户名等 – 2011-05-01 16:21:15
是否有一个原因,您不能只使用相同的活动并替换标题栏(或替换徽标和用户名)为每一个onCreate()? – 2011-05-02 16:51:40