我的应用程序有以下流程屏幕:
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
有什么方法可以解决这个问题吗?
在Android中我有一些活动,比方说A,B,C.
在A中,我使用此代码打开B:
Intent intent = new Intent(this, B.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在B中,我使用此代码打开C:
Intent intent = new Intent(this, C.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
当用户点击C中的按钮时,我想返回A并清除后栈(关闭B和C).因此,当用户使用后退按钮B和C将不会显示时,我一直在尝试以下内容:
Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是当我回到活动A时,如果我使用后退按钮,B和C仍然会出现.我怎么能避免这种情况?
是否可以在没有UI的情况下从主函数启动活动?即,有没有办法围绕另一个活动创建一种"包装",即通过启动主要活动,它会自动带您到另一个活动.
如果这是不可能的,有没有办法从堆栈中删除主要活动,以便单击后退按钮不会将您带到空白UI?这是我正在尝试做的一个例子:
public class WrapperActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-1212"));
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud) 我在Android中有一个包含多个活动的应用程序,我希望用户能够通过按菜单按钮注销.我遇到的问题是
A)的Android不会让你终止应用程序和
B),即使我的用户发送给LoginActivity他们又可以随时按下背部和马上回以前的活动,他们是in.
我已经尝试使用以下两个标志启动Activity:
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我也亲自尝试过每一个.
我也打过电话finish()后startActivity(intent),我在另一个StackOverflow的问题读取.
我正在创建一个项目,我有一个登录屏幕,用于登录
应用程序.此登录屏幕应该只在第一次可见,因此用户可以填写并登录,但是当用户第二次打开应用程序时,应用程序必须显示main.activity.如何使用共享首选项.
我不明白该怎么做.
当我的堆栈处于这种情况时:
A->B->C
Run Code Online (Sandbox Code Playgroud)
如果我启动D活动,我希望活动堆栈变为:
A->D
Run Code Online (Sandbox Code Playgroud)
请注意,活动C是一个对话框.
可能重复:
从历史堆栈中删除活动
我正在寻找从历史堆栈中删除StartActivity的解决方案.StartActivity是在开始时启动的.我正在使用此类检查一些用户值,并希望将用户重定向到MainActivity,如果一切正确的话.
我试图设置一个标志:
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
但这并不是应该做的.
App starts -> StartActivity -> MainActivity -> PRESS back -> the app should end
Run Code Online (Sandbox Code Playgroud)
它确实:
App starts -> StartActivity -> MainActivity -> PRESS back -> StartActivity
Run Code Online (Sandbox Code Playgroud)
谢谢您帮忙!
编辑:这是我用来启动MainActivity的代码:
Intent i = new Intent(context, DashBoardActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Run Code Online (Sandbox Code Playgroud) 步骤1-应用程序在最近的应用程序列表中不存在(应用程序已从最近的应用程序列表中删除).
第2步 - 一旦我收到通知,打开IncomingCall活动,用户接受呼叫.
步骤3-用户单击断开连接按钮完成IncomingCall活动.
问题 - 应用程序显示在最近的应用程序列表甚至应用程序之前不在最近的应用程
清单入口
<activity
android:name=".activities.IncomingCall"
android:excludeFromRecents="true"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
</activity>
Run Code Online (Sandbox Code Playgroud)
在活动中使用
public void onClick(View v) {
switch (v.getId()) {
case R.id.onCallDisconnectButton:
phoneCallBaseClass.disconnect();
IncomingCall.this.finish();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
而且我也试过下面的链接,但它将在app已经存在于后台时工作
或者是否有任何其他方式来显示来电视图以便它不会在历史记录中持续存在.
你可以举例说明任何VoIP电话应用
在来电来电后,从最近的应用列表中删除应用,用户断开呼叫活动(IncomingCallActivity)将不会存在于最近的应用列表中.但在我的案例中,在断开呼叫后,活动在最近的应用列表中仍然存在.
谢谢
可能的重复:
从历史堆栈中删除一个活动
假设我的堆栈上有三个活动,像这样 A ? 乙?C.
我想终止 B 并用活动 D 替换它,这样堆栈看起来像这样: A ? ? C.
预期效果是有一个“屏幕选择器”活动 C. 它在活动 B 的顶部打开,提供许多可供选择的内容,当用户单击其中一个时,它会关闭,显示所选屏幕。我可以使用 overridePendingTransition 取消打开动画,但这并不能帮助我通过关闭选择器界面来显示活动。
有没有办法在Android中做到这一点?
我正在寻找一种从历史堆栈中删除某个活动的方法,并在这里找到了解决方案(Wakkas的anwer).但是,如果我在打开此活动的情况下关闭应用程序,例如通过按主页按钮,然后返回到该活动,则不会恢复活动.
如果我删除"noHistory"属性,它将返回并在kill后恢复.
有没有办法让它不出现在历史堆栈上(=不想通过在下一个活动中按后退按钮回到它)没有这种行为?
亲切的问候,水母