Vik*_*ngh 4 android android-intent
我已经尝试了几乎所有解决方案,但没有成功:(.
我有一个简单的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);
Run Code Online (Sandbox Code Playgroud)
}
这将按预期启动MyCustomActivity().
现在我在myJavaClass.java中有另一个函数来关闭/完成MyCustomActivity但是它无法这样做!
我试过了
在清单中创建MyCustomActivity SingleTop并通过上述意图创建活动
将一个活动实例传递给MyCustomActivity的onCreate()中的"this",并从myJava.class调用MyCustomActivity.activity.finish(),但这也不起作用
请帮我.我已经被困在这里几个小时了.我知道解决方案非常简单和概念,但我是新手.只需构建Java/Android概念!
编辑
MyCustomActivity
public Activity activity;
OnCreate()
{
...
this = activity;
}
Run Code Online (Sandbox Code Playgroud)
MyJavaClass
public closeActivity(Context context)
{
Activity customActivity = MyCustomActivity.activity;
customActivity.finish();
}
Run Code Online (Sandbox Code Playgroud)
我认为你要做的事情从根本上说是糟糕的.首先,在Activity代码之外,不能保证活动仍然存在 - 内存管理器可能已经清理它,用户可能已经按下Back等.将活动视为独立实体 - 您可以启动它们,并且你可以选择在他们完成他们正在做的事情时得到一个结果,但就是这样.
想一想你是否真的必须以编程方式从外部关闭活动 - 我会说这是一个不寻常的设计,但在某些情况下它可能是合适的.
如果是这样,我认为你想要的是一个发布/订阅系统,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();
}
}
Run Code Online (Sandbox Code Playgroud)
和
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
public interface FinishListener
{
void onFinishCallback();
}
Run Code Online (Sandbox Code Playgroud)
现在唯一剩下的问题是如何从Activity中获取MyJavaClass.这取决于你 - 你可能已经知道如何,你可以将它放在你的应用程序实现中,它可能是单例(坏),监听器可能是静态的(坏的)或各种其他选项.
哦,不要忘记在Activity的onDestroy()方法中再次删除监听器!
| 归档时间: |
|
| 查看次数: |
10143 次 |
| 最近记录: |