2013-04-30 74 views
0

我是新来的Android开发人员。我按下后退按钮时遇到问题。Android中的后退按钮导航

如果我使用完成特定视图被破坏。下次按下后退按钮,应用程序结束。 我需要与后退按钮

控制的导航例如这是我的活动A,B,C,d

我的流量应

从活动A到B到C到d至A

和用户可以d之间导航到一个

,但是当他的用户从d导航到

再次按下后退按钮

它不应该导航到任何其他活动

请帮

回答

0

我想要一个活动保持其背部按下状态刚刚开始之前不调用完成()方法其他活动。 Android将照顾采取以前的活动时,你会按后退按钮,因为没有在清单文件中没有条目android:noHistory="true"

0

你的一个活动就覆盖

@Override 
    public void onBackPressed() { 
     super.onBackPressed();//comment this if you want to implement your own logic 
     //Do whatever you like 
    } 

,并开始d活动。

0

在d覆盖onBackPress

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    Intent i = new Intent(this, A.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
} 
1

要从D.所以导航到活动A,你可以从d如下调用活动A,

Intent intent = new Intent(this, A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //clears B and C from stack. 
startActivity(intent); 
0

试试这个 只需键入此在活动A相同,没什么可改变

@Override public void onBackPressed(){

} 
0

无论何时从其他活动调用活动,调用活动都会根据活动生命周期进入堆栈。当你从A移到B时,A被存入堆栈,B被打开。你想按(A到B到C到D到A),(D到A或反之),但不是从B到A或C到B或D到C或A到D。

当你从B调用活动C时,也调用finish()来销毁B,同样,当你从C调用D来销毁C时,也就是说你不能后退。这会限制你的流量。

类A延伸活动{

//按钮点击

Intent intent=new Intent(A.this,B.class); 
startactivity(intent); 

}

类B扩展活动{

//按钮点击

Intent intent=new Intent(B.this,C.class); 
startactivity(intent); 
finish(); 

}

C类延伸活动{

//按钮点击

Intent intent=new Intent(C.this,D.class); 
startactivity(intent); 
finish(); 

}

类d延伸活动{

//按钮点击

Intent intent=new Intent(D.this,A.class); 
startactivity(intent); 

}

以这种方式,当你从A到B - > A存储在堆栈中时,B到C - > B被销毁(使用完成),C到D - > C被销毁,并且你可以去使用后退按钮直接从D到A.如果从D到A之后再次按下后退按钮,它会到达D,然后再次按下它会到达A(首先启动的活动),然后再次按下后,应用程序将结束。