现在我们将一一看到您的问题:
1. when List button is clicked i have to move on to the List Activity, and by pressing back button from List Activity i need to show Home page, not Details Page
现在您可以通过以下方式实现:
每当您参加任何其他活动时都不要打电话finish()
。home or list activity
这样,Home activity
将始终存在于堆栈中。所以现在,呼吁startActivity
或Home activity
设置List activity
标志,因为FLAG_ACTIVITY_REORDER_TO_FRONT
这应该把你的活动带到前面。
2. when Home button is clicked i have to move on to the Home Activity, and by pressing back button from Home Activity i need the app to get closed.
3. back ->
a. when the user comes first time to the Details page, by pressing back button he needs to move to List Activity
b. after loading the Details activity again and again, by pressing the back button user can move on to previous Details, here the condition is while starting the activity i should not give finish(), because this causes the data to get loaded of a long time
同样,这可以通过使用与上面设置的标志相同的 home 的 startActivity 来完成。
或者
使用startActivityForResult()
fromdetails
到任何其他活动。因此,现在当您想Home
从(所有)Details
活动返回活动时,并使用setResult
as ex.:RESULT_FINISH
并onActivityResult()
检查此result code
内容,如果您收到此结果代码,请调用finish
活动details
。
This way, all your Details activity will get finished.
并从Home
活动中。如果您按finish()
,您的应用程序将关闭(make sure all your activities are calling finish at some point of time.)
,因为您的所有活动都已完成。
编辑:
当您从 开始时Home > List > Details
,您的问题是:
1. when List button is clicked from details activity, i have to move on to the List Activity, and by pressing back button from List Activity i need to show Home page, not Details Page.
如果您不为任何活动调用 finish() ,这将起作用Home > List > Details
。
现在,您可以多次从 Details 调用 Details,为此,我建议,这是一个虚拟代码:
public class Details extends Activity{
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/*
* If user presses back button, handle it like this:
*/
if(requestCode == REQUEST_DETAILS) {
if(resultCode == RESULT_FINISH) {
finish();
}
}
// In this way all your Details Activity will get finished.
}
@Override
public void onBackPressed() {
super.onBackPressed();
/*
* If user presses back button, call following:
*
* set some flag as TRUE, ex.:
*
* flagIsFinishing = true;
*
* setResult(RESULT_FINISH);
* finish()
*/
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*
* if(flagIsFinishing) {
* setResult(RESULT_FINISH);
* finish();
* }
*
*/
}
@Override
protected void onResume() {
super.onResume();
/*
* On selecting any option call Details activity like
*
* startActivityForResult(intent, REQUEST_DETAILS);
*/
}
}