在我的应用程序中,我有活动A,B,C,D和E.第一个活动是A然后打开B然后是C和D.现在我的背堆是A-B-C-D。现在,当我从D移动到E时,我希望完成后台堆栈中的所有活动,现在E应该是堆栈中的第一个活动。
就我而言
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
或
android:launchMode="singleTask"
不起作用,因为我没有重新打开已经打开的活动。打开新活动时,我必须关闭后台堆栈中的所有活动。
请帮我这样做。
答案 0 :(得分:1)
设置以下标志:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
Intent.FLAG_ACTIVITY_CLEAR_TASK);
FLAG_ACTIVITY_CLEAR_TASK
可以从api 11获得。
答案 1 :(得分:0)
使用下面的完成。例如:如果要移动到B,例如:A-> B-> C-> D来自D而不是C,
然后使用下面的finish()
。对于其他人保持原样,或者您也可以使用
android:noHistory="true" in manifest.
即
Intent i=new Intent(C.this,D.class);
startActivity(i);
finish();
如果您从D单击后退,C活动将不会被取代。它会跳到B活动,除非你在B中声明finish();
时没有给出finish()
,然后跳到A活动。同样你也可以这样做。或者您也可以使用android:noHistory="true"
答案 2 :(得分:0)
在ActivityE
中使用以下代码...不要使用Intent.FLAG_ACTIVITY_NEW_TASK
Intent intent = new Intent(this, ActivityD.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 3 :(得分:0)
是的,你可以做到。
While moving from A -> B, finish() A, and move to B.
While moving from B -> C, finish() B, and move to C.
While moving from C -> D, finish() C, and move to D.
While moving from D -> E, just move to E. (dont finish activity D)
这样,D将成为堆栈中的第一个活动。
答案 4 :(得分:0)
试试这个
Intent i = new Intent(CurrentActivity.this,NextActivity.class);
// Closing all the Activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add new Flag to start new Activity
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Staring NewActivity
startActivity(i);
finish();
清单中的 android:noHistory="true"
。
答案 5 :(得分:0)
在转移到活动E时,没有完成你的活动D.
表示删除标记行Intent.FLAG_ACTIVITY_NEW_TASK
只写
Intent intent = new Intent(this, ActivityD.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
并在清单中添加第android:noHistory="true"
行。
答案 6 :(得分:0)
编辑最终答案
ActivitA重要
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class ActivityA extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("EXIT", false)) {
startActivity(new Intent(ActivityA.this,ActivityE.class));
finish();
}
setContentView(R.layout.alayout);
Button play;
play = (Button) findViewById(R.id.aId);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ActivityA.this,ActivityB.class));
}
});
}
}
<强> ActivityB
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
setContentView(R.layout.blayout);
Button play;
play = (Button) findViewById(R.id.bId);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ActivityB.this,ActivityC.class));
}
});
}
}
<强> ActivityC
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class ActivityC extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
setContentView(R.layout.clayout);
Button play;
play = (Button) findViewById(R.id.cId);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ActivityC.this,ActivityD.class));
}
});
}
}
活动D重要
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class ActivityD extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
setContentView(R.layout.dlayout);
Button play;
play = (Button) findViewById(R.id.dId);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
finish();
}
});
}
}
<强> ActivityE
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
public class ActivityE extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
setContentView(R.layout.elayout);
Button play;
play = (Button) findViewById(R.id.eId);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//startActivity(new Intent(ActivityE.this,ActivityE.class));
}
});
}
}
就这样做