我的应用程序有以下流程屏幕:
Home->screen 1->screen 2->screen 3->screen 4->screen 5
现在我log out 在每个屏幕上都有一个公共按钮
(Home/ screen 1 / screen 2 /screen 3/ screen 4 / screen 5)
我希望当用户点击退出按钮(从任何屏幕)时,所有屏幕都将完成,并且Log in将打开一个新屏幕.
我几乎尝试过所有FLAG_ACTIVITY这一切.我还在stackoverflow中查看了一些答案,但无法解决问题.我的应用程序是在Android 1.6上,因此无法使用FLAG_ACTIVITY_CLEAR_TASK
有什么方法可以解决这个问题吗?
在我的应用程序中,我有3个活动.
从第1次活动到第2次,第2次到第3次.从3日开始,它再次升至第1名.如果我从第一个按回键,那么它应该进入主屏幕(应用程序将停止).如果我按下第一个键,它再次进入第二个活动,如果我按下第二个后退键,那么它将转到第一个.然后,如果我按回1键,则应用停止.
我想要什么,当我在第三个活动并按下后退按钮然后它应该到第一个并同时完成第二个活动.
我怎样才能做到这一点?
我有两个活动A和B. B是透明的传递活动,可以看到A. 我想按下按钮A杀死B.
这是我到目前为止所尝试的:
B obj=new B();
obj.finish();
Run Code Online (Sandbox Code Playgroud)
我创建了一个B的对象并试图杀死它.那没用.
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("keep", true);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这段代码应该做的是清除最顶层的活动,即B并再次调用B,除非这次我传递的值使得B在几秒钟后自杀.
由于某种原因,这只会增加活动的更多实例.或者至少我认为发生了什么,因为屏幕由于许多透明的活动而变得像素化.
这是我的清单:
<activity
android:name="com.xxx.xxx.B"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:clearTaskOnLaunch="true" >
</activity>
Run Code Online (Sandbox Code Playgroud)
当我在显示活动时按下按钮并且第二次杀死按钮时,我该怎么办呢?创作部分显然得到了照顾.我的活动B弹出,我想杀死它,因为B在顶部.
编辑
我用一个checkBox尝试了这个,这是代码:
enable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finishActivity(0);
Intent intent = new Intent(A.this, B.class);
if (enable.isChecked()) {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("keep", true);
intent.putExtra("value", 10);
startActivityForResult(intent, 0);
}
else
{
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("keep", false);
startActivityForResult(intent, 0);
}
}
});
Run Code Online (Sandbox Code Playgroud)
选中启用后,将调用该活动,该工作正常.但他们一直在努力.当我检查并取消选中复选框时,它不像这个A-> B-> A-> B. 它是A-> B-> BB-> BBB
我有3个活动A,B和C. A导致B导致C.我希望能够在A和B之间来回移动但是我想在C开始后完成A和B. 我知道如何通过意图启动C时关闭B但是如何在C启动时关闭A?
我正在尝试使用 kotlin 完成另一个(android)的活动。我知道用java来做这件事的方法是使用以下代码(/sf/answers/726549281/)
在第一个活动中:
BroadcastReceiver broadcast_reciever = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
String action = intent.getAction();
if (action.equals("finish_activity")) {
finish();
// DO WHATEVER YOU WANT.
}
}
};
registerReceiver(broadcast_reciever, new IntentFilter("finish_activity"));
Run Code Online (Sandbox Code Playgroud)
关于其他活动:
Intent intent = new Intent("finish_activity");
sendBroadcast(intent);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,将 java 活动转换为 kotlin 不会给出有效的输出,如果有人能给我正确的语法来正确地使用kotlin,我将不胜感激
kotlin 输出(第一个活动)[确定]:
val broadcast_reciever = object : BroadcastReceiver() {
override fun onReceive(arg0: Context, intent: Intent) {
val action = intent.action
if (action == "finish_activity") { …Run Code Online (Sandbox Code Playgroud)