我想在我的應用程序中使用ActionBar中的向上按鈕來實現Navigation Pattern。ActionBar向上按鈕和導航模式
我有詳細信息活動,在這裏我可以從家裏,收藏夾和搜索屏幕。我也可以從瀏覽器打開這個屏幕(處理特定的網址)。當用戶按向上按鈕時,我使用flush()方法來模擬返回導航。但是,對於用戶來自瀏覽器的情況,我想打開主屏幕而不是以前的瀏覽器活動。我怎麼能認識到,以前的活動來自另一個應用程序,並導航到主屏幕?
我想在我的應用程序中使用ActionBar中的向上按鈕來實現Navigation Pattern。ActionBar向上按鈕和導航模式
我有詳細信息活動,在這裏我可以從家裏,收藏夾和搜索屏幕。我也可以從瀏覽器打開這個屏幕(處理特定的網址)。當用戶按向上按鈕時,我使用flush()方法來模擬返回導航。但是,對於用戶來自瀏覽器的情況,我想打開主屏幕而不是以前的瀏覽器活動。我怎麼能認識到,以前的活動來自另一個應用程序,並導航到主屏幕?
上一步應始終導航到該活動的層次結構父級,並且後退應總是臨時導航。
換句話說,你應該保持原樣。
至於Up,無論它來自哪裏,它都應該始終走到同一個地方。因此,如果您通常從YourListActivity來到DetailsActivity,那麼無論您來自哪裏,Up都應該到達那裏。最可能的地方是你自己決定的,但它應該始終如一。
如果您從非正常位置(如瀏覽器,其他活動,窗口小部件或通知)來到Details Activity,您應該重新創建任務堆棧,以便導航使用相同的路徑。下面是從Android開發人員培訓爲例:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, YourListActivity.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is not part of the application's task, so
// create a new task
// with a synthesized back stack.
TaskStackBuilder
.from(this)
.addNextIntent(new Intent(this, HomeActivity.class))
.addNextIntent(upIntent).startActivities();
finish();
} else {
// This activity is part of the application's task, so simply
// navigate up to the hierarchical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
}
下面是Android培訓上實現導航
(http://developer.android.com/training/implementing-navigation/index.html)。
您將需要NavUtils和TaskStackBuilder支持庫。
使用此方法時,父級活動會丟失所有附加項和狀態。你有沒有辦法恢復它的狀態?根據指南(http://developer.android.com/design/patterns/navigation.html)的 – sarunw
,當通知將您置入應用程序深處時,不應該暫時導航。查看Gmail或日曆示例。 – Maragues
@art你可以嘗試我的解決方案:http://stackoverflow.com/a/20306670/878126 –