您的位置:首页 > 其它

Implementing Temporal Navigation 实现时间导航

2013-05-04 09:37 525 查看
Temporal navigation is navigation to previously visited screens. Users can visit previous screens by pressing the device
Back button. This user interface pattern is described further in
Providing Ancestral and Temporal Navigation in Designing Effective Navigation and in
Android Design: Navigation.

Android handles basic Back navigation for you (see Tasks and Back Stack for details on this behavior). http://blog.csdn.net/sergeycao

Implement Back Navigation with Fragments

When using fragments in your application, individual
FragmentTransaction
objects can represent context changes that should be added to the back stack. For example, if you are implementing a
master/detail flow on a handset by swapping out fragments (thus emulating a
startActivity()
call), you should ensure that pressing the
Back button on a detail screen returns the user to the master screen. To do so, you can use
addToBackStack()
:

// Works with either the framework FragmentManager or the
// support package FragmentManager (getSupportFragmentManager).
getFragmentManager().beginTransaction()
        .add(detailFragment, "detail")

        // Add this transaction to the back stack and commit.
        .addToBackStack()
        .commit();

The activity's
FragmentManager
handles Back button presses if there are
FragmentTransaction
objects on the back stack. When this happens, the
FragmentManager
pops the most recent transaction off the back stack and performs the reverse action (e.g., removing a fragment if the transaction added it).

If your application updates other user interface elements to reflect the current state of your fragments, such as the action bar, remember to update the UI when you commit the transaction. You should update your user interface after the fragment manager
back stack changes in addition to when you commit the transaction. You can listen for when a
FragmentTransaction
is reverted by setting up an
FragmentManager.OnBackStackChangedListener
:

getFragmentManager().addOnBackStackChangedListener(
        new FragmentManager.OnBackStackChangedListener() {
            public void onBackStackChanged() {
                // Update your UI here.
            }
        });

Implement Back Navigation with WebViews

If a part of your application is contained in a
WebView
, it may be appropriate for
Back to traverse browser history. To do so, you can override
onBackPressed()
and proxy to the
WebView
if it has history state:

@Override
public void onBackPressed() {
    if (mWebView.canGoBack()) {
        mWebView.goBack();
        return;
    }

    // Otherwise defer to system default behavior.
    super.onBackPressed();
}

Be careful when using this mechanism with highly dynamic web pages that can grow a large history. Pages that generate an extensive history, such as those that make frequent changes to the document hash, may make it tedious for users to get out of your activity.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: