gpt4 book ai didi

android - 从单独的 myJavaClass.java 完成 Activity()

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:11 26 4
gpt4 key购买 nike

我已经尝试了几乎所有来自 SO 的解决方案,但没有成功:(。

我有一个带有几个函数的简单 myJavaClass.java。

myJavaClass 中的函数之一:startActivity() 启动 MyCustomActivity

public startActivity(Context context)
{
Intent intent = new Intent(context, MyCustomActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);

这会按预期启动 MyCustomActivity()。

现在我在 myJavaClass.java 中有另一个函数来关闭/完成 MyCustomActivity 但它不能这样做!

我试过了

  1. 在 list 中制作 MyCustomActivity SingleTop 并通过上述 Intent 创建 Activity

  2. 将 Activity 实例传递给 MyCustomActivity 的 onCreate() 中的“this”并从 myJava.class 调用 MyCustomActivity.activity.finish(),但这也不起作用

请帮帮我。我已经被困在这里几个小时了。我知道解决方案非常简单和概念化,但我是新手。只是构建 Java/Android 概念!

编辑

我的自定义 Activity

public Activity activity;

OnCreate()
{
...
this = activity;
}

我的Java类

public closeActivity(Context context)
{

Activity customActivity = MyCustomActivity.activity;
customActivity.finish();
}

最佳答案

我认为您尝试做的事情从根本上来说是不好的。首先,在 Activity 代码之外,无法保证 Activity 仍然存在 - 内存管理器可能已经清理它,用户可能已经按下返回等。将 Activities 视为独立的实体 - 你可以启动它们,并且您可以选择在他们完成他们正在做的事情时返回结果,仅此而已。

想想您是否真的必须从外部以编程方式关闭 Activity - 我会说这是一个不寻常的设计,但在某些情况下它可能是合适的。

如果是这样,我认为您想要的是一个发布/订阅系统,MyCustomActivity 可以通过该系统向 MyJavaClass 注册一个监听器,然后接收一个回调,然后它可以“完成”自己。

public Activity activity implements FinishListener
{
public void onCreate(...)
{
//where does MyJavaClass come from? see in a minute
MyJavaClass myjava = getMyJavaclass();

myJava.addFinishListener( this );
}

public void onFinishCallback()
{
this.finish();
}
}

   public class MyJavaClass
{
private List<FinishListener> finishListeners = ...;

public void addFinishListener( FinishListener fl )
{
this.finishListeners.add(fl);
}

public closeActivity(Context context)
{
for ( FinishListener fl : finishListeners )
{
fl.onFinishCallback();
}
}
}

   public interface FinishListener
{
void onFinishCallback();
}

现在唯一剩下的问题是如何从 Activity 中获取 MyJavaClass。这取决于您 - 您可能已经知道如何,您可以将它放在您的应用程序实现中,它可以是单例(不好),监听器可以是静态的(不好)或各种其他选项。

哦,别忘了在 Activity 的 onDestroy() 方法中再次移除监听器!

关于android - 从单独的 myJavaClass.java 完成 Activity(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977881/

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