gpt4 book ai didi

java - 当前正在运行的Activity的调用函数

转载 作者:行者123 更新时间:2023-12-01 15:01:23 25 4
gpt4 key购买 nike

假设我有多个正在运行的 Activity ; A、B 和 C。每个都共享一个类似的选项菜单,但在执行方面存在一些差异( Activity A 中的“启动”选项可能与 Activity B 中的“启动”选项略有不同)。我还有一个名为“values”的静态类,它与 Activity A 相关联。它还具有当前正在运行的 Activity 的上下文。

有时值可能会调用当前正在运行的 Activity 的选项菜单中的项目。我的代码很困惑(见下文),所以我想将其组织成更易读的形式。

我的目标是设置值,以便它可以仅调用当前正在运行的 Activity 的函数,而不是该 Activity 的选项菜单项。在 Activity 内部,选项菜单的一项将仅调用函数而不是其中的代码(出于组织原因)。

这里是调用当前正在运行的 Activity 的选项菜单项的values.class 示例。

public void startExample() {
Runnable startRun = new Runnable() {
@Override
public void run() {

handler.post(new Runnable() { // This thread runs in the
// UI
@Override
public void run() {
((Activity) getCurrentContext()).openOptionsMenu();
((Activity) getCurrentContext()).closeOptionsMenu();
((Activity) getCurrentContext()).onOptionsItemSelected(theMenu.findItem(R.id.start));
}
});
}
};
new Thread(startRun).start();
}

如您所见,values.startExample() 调用当前正在运行的 Activity 的选项菜单的启动项。我想更改此设置,以便它调用基于当前正在运行的 Activity 的函数。所以我想我可以做这样的事情。

在values.class中

ActivityB b = new ActivityB
public void startExample() {
Runnable startRun = new Runnable() {
@Override
public void run() {

handler.post(new Runnable() { // This thread runs in the
// UI
@Override
public void run() {
if( ((Activity) getCurrentContext()).getClass().getName().equals("package.ActivityB") ) {
b.start();
}
}
});
}
};
new Thread(startRun).start();
}

Activity B 可能看起来像。

public class ActivityB extends Activity {
//class code here

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case start:
this.start();
break;

}

}
public void start() {
//code here
}
}

这可能吗?我知道这个问题可能听起来很困惑,所以请提出问题,我也许可以再次简化它。

最佳答案

不不不不不。这就像向 Android 拉一根 pry 棍,然后把它砸成 fragment 。 Activity 并不意味着通过new实例化。

如果您想要的只是不同 Activity 在其 onOptionsItemSelected() 中调用的方法之间有一些共享行为,那么要么创建一个 super Activity 并调用 super Activity ,然后再在特定子类中添加您想要的任何行为或者创建一个可供所有 Activity 访问的函数,其中包含未更改的内容,然后在子类内部添加会更改的内容。无论哪种方式,Activity 都应该通过在 startActivity 等中提供对类的引用来运行。您不能将 Activity 视为普通的 java 对象(即使它最终是这样),因为它的生命周期由系统。

关于java - 当前正在运行的Activity的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594688/

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