gpt4 book ai didi

android - 多个 Activity 上的相同按钮

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:06 25 4
gpt4 key购买 nike

是的,我在每项 Activity 的同一位置都有一个登录按钮,目前我有大约 20 项 Activity ,但很快就会增加很多,我真的不想复制和粘贴相同的内容将代码写入每个 Activity ,因此我正在寻找一种简单、高效的解决方案来处理将在整个应用程序中全局运行的 onClick 事件。

例如,如果用户 A 在 Activity 1 上单击登录按钮并登录,它将在 Activity 2 和 3 上显示他已登录,依此类推。直到他们注销。

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

在每个 Activity 开始时调用单个函数会更容易吗?我认为这不是对处理能力等的所有有效利用吗?!

如有任何建议和/或指导,我们将不胜感激。谢谢:)

最佳答案

您无法避免以任何一种方式在所有 Activity 中实现该监听器。但是你可以用更有条理的方式来做:

您可以为您的应用程序编写自定义页眉布局 (/res/layout/header.xml),其中您有“登录”按钮和点击监听器集(指向onSignInClicked 方法):

android:onClick="onSignInClicked"

然后将此 header 包含到每个 Activity 布局中:

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

您还可以创建一个包含 onSignInClicked 方法声明的接口(interface),并通过实现该接口(interface)的所有 Activity 强制它们定义 onSignInClicked 方法的主体。

你在那里实际做的事情也可以被包装成

  • 一个全局的静态方法无障碍类(class),或
  • 里面有一个参数化良好的方法你的 Application 扩展类。

因此在您的所有 Activity 中,此方法可以是:

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);
}

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

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

关于android - 多个 Activity 上的相同按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com