gpt4 book ai didi

java - Android 全局函数等

转载 作者:行者123 更新时间:2023-11-29 21:09:44 25 4
gpt4 key购买 nike

我对 Android 编程的了解几乎为零,但愿意学习,所以除了代码 fragment 之外,我还希望获得链接和资源...也就是说,这是我想要实现的目标。

我正在制作具有多个按钮的应用程序(很努力)。这些按钮将用于各种 Activity ,但总是会导致相同的 Activity 。例如。 button1 将成为主要 Activity 的一部分,将转到 button1.activity.class,但也可能出现在其他 buttonX.activity.classes 中。不管它在哪里,点击它都会转到button1.activity.class。现在,我想要全局函数,因为我可以从项目中的任何 Activity 中调用它,这几乎可以做到这一点:1. 获取按钮的标签(不确定标签是否用于此目的,但这是我在脑海中设置的合适的东西2. onclick 将打开具有特定标签名称的 Activity ,例如如果标签内容是“Salt”,它将打开 SaltActivity.class。

总的来说,我希望它像这样工作:打开 Activity (btnSalt);该函数将查看名为 (btnSalt) 的按钮的当前 Activity ,从 Tag 获取字符串,然后执行类似 startActivity(new Intent(MainActivity.this, Salt 或任何参数 is.class)) 的操作;

这应该作为全局工作,这样我就不必在所有可能的 Activity 中设置每个按钮 onClickListener ...我猜想创建类似 Util.class 的东西,然后在需要时将它导入到 acvtivites 应该做吗?

如前所述,我们非常感谢代码 fragment 、书籍、博客、示例和任何其他帮助。希望这一切都有意义:)提前致谢

最佳答案

即使您不了解 Android,我也希望您对 Java 和继承有一点了解。您需要让您的 Activity 继承自基础 Activity 。

选项 1

泛化您想要的单个 onClick 方法的一个好方法是在 Activity 类中定义它,例如 BaseActivity,如下所示:

    public class BaseActivity extends Activity implements OnClickListener {

@Override
public void OnClick(View view) {
// The generalized code here:
String message = (String) view.getTag();
Intent theIntent = new Intent(BaseActivity.this, ThatOneActivity.class);
theIntent.putExtra("Your Key", message);
startActivity(theIntent);
}
}

在将使用此方法的其余 Activity 中,您只需执行以下操作:

public class SomeActivity extends BaseActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourLayout);
Button someButton = (Button) findViewById(R.id.yourButtonId);
// We still have to add an onclicklistener to every button,
// unless we've defined the onClick element in XML (see option 2)
button.setOnClickListener(this);
}
}

选项 2

实现 onClick 泛化的另一种方法是仍然有一个定义方法的基类,然后将一个元素添加到定义按钮的 XML 中:

android:onClick="openActivity"

然后您可以在 BaseActivity 类中定义该方法,而无需在实现它的 Activity 中向按钮添加任何监听器:

public class BaseActivity extends Activity implements OnClickListener {

public void openActivity(View view) {
// The generalized code here:
String message = (String) view.getTag();
Intent theIntent = new Intent(BaseActivity.this, ThatOneActivity.class);
theIntent.putExtra("Your_Key", message);
startActivity(theIntent);
}
}

最终,在您刚刚启动的 Activity (我将其命名为 ThatOneActivity)中,您可以通过其键检索您添加到 Intent 中的消息:

getIntent().getStringExtra("Your_Key");

请注意,硬编码键会出现错误,因为有一天您可能会打错字,它就不再起作用了。解决方案很简单:你选择一个合适的地方放置一个 public static final String 来定义键(BaseActivity 会很好),然后在你的代码中使用这个常量.

关于java - Android 全局函数等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338844/

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