我在android中完成了与意图标记相关的主任务,并创建了10个活动,每个活动随后都调用下一个活动(MainActivity打开activity2,activity2调用activity3等)。第10个活动使用标志CLEAR TOP调用activity4,所以我猜想,第4个活动出现在屏幕上之后,我不应该返回第10个活动,但是我还是这样做了。有趣的是,当我从第4个导航到第5个活动(通过第10个之后)并返回时,我的堆栈被清除了,我返回了第3个堆栈(但不是第10个)。如何将这种行为应用于第四项活动本身,而无需再次进入第五项?
公共类MyActivity9扩展了AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main9);
Button b=findViewById(R.id.btn_to_2);
final Intent intent= new Intent(this,MyActivity10.class);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(intent);
}
});
}
}
公共类MyActivity10扩展了AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main10);
Button b=findViewById(R.id.btn_to_2);
final Intent intent= new Intent(this,MyActivity4.class);
// CLEAR_TOP
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
// CLEAR_TOP
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(intent);
}
});
}
}
答案 0 :(得分:0)
我认为在开始任何活动之后,您应该使用finish()方法关闭上一个活动。然后我认为您启动另一个意图没有任何问题。
例如
CriteriaBuilder cBuilder = session.getCriteriaBuilder();
CriteriaQuery<Image> criteriaQuery = cBuilder.createQuery(Image.class);
Root<Image> imageRoot = criteriaQuery.from(Image.class);
Root<Tag> tagRoot = criteriaQuery.from(Tag.class);
Join<Image, Tag> join = imageRoot.join(Image_.TAGS);
List<Predicate> predicateList = new ArrayList<>();
predicateList.add(cBuilder.in(join));
predicateList.add(cBuilder.or(cBuilder.equal(tagRoot.get("tagName"), "träd")));
Predicate finalPredicate = cBuilder.and(predicateList.toArray(new Predicate[0]));
criteriaQuery.select(imageRoot);
criteriaQuery.where(finalPredicate).distinct(true);
org.hibernate.query.Query<Image> imageQuery = session.createQuery(criteriaQuery);
List<Image> images = imageQuery.getResultList();