如何在我的应用程序中使用设备后退按钮一次返回1个屏幕?

时间:2013-09-19 15:24:52

标签: android android-webview

我正在尝试使用内置的后退按钮,使其在webview内或应用程序内(无论在哪里)返回1屏幕1,所以假设我有一个新闻部分并且我点击它,它将显示新闻页面。然后我点击搜索并转到webview,当我点击后面时,它应显示我上次打开的新闻栏目页面。此外,如果我在webview中并在webview中导航并单击返回,那么它应该在webview中显示一个页面。我添加了一些在webview中工作的后退代码。但是,它不适用于enws部分页面。它带我回到新闻栏目,而不是我在新闻栏目下打开的特定页面。如何修复我的代码以实现相同的目标?这是我为后面添加的代码:

private boolean goingBack = false;
    private boolean onBackPressClearStack = true;

    public void setOnBackPressClearStack(boolean b){
        onBackPressClearStack = b;
    }
    public boolean webViewSteppedBack() {
        if (mWebview != null && mWebview.canGoBack()) {
            mWebview.goBack();

            return true;
        }
        return false;
    }

    @Override
    public boolean backPressed(final MainActivity mainActivity) {
        if (webViewSteppedBack()) {
            return true;
        }

        if (onBackPressClearStack) {
            goingBack = true;
            FragmentUtils.onBackPressedKnockFragsOffStack(mainActivity, this);
        }
        return false;
    }
public static MyWebViewFragment newInstanceNoBackPressed(final FragmentManager manager, final String searchTerm,  final String symbolType, int containerViewId) {
        MyWebViewFragment fragment =  __newInstance(new MyWebViewFragment(), manager, searchTerm, symbolType, containerViewId);
        fragment.setOnBackPressClearStack(false);
        return fragment;
    }
public static MyWebViewFragment newInstanceNoBackPressed(final MyWebViewFragment fragment, final FragmentManager manager, final String searchTerm, final String symbolType, int containerViewId) {
        fragment.setOnBackPressClearStack(false);
        return __newInstance(fragment, manager, searchTerm, symbolType, containerViewId);
    }
@Override
    public void onResume() {
        super.onResume();
        final MainActivity activity = (MainActivity) getActivity();
        activity.updateActionBarTitle();
        activity.setBackPressListener(this);

        }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (goingBack) {
            return null;
        }
        final MainActivity activity = (MainActivity) getActivity();

        activity.setBackPressListener(this);
        View view = inflater.inflate(R.layout.fragment_search_answers, container, false);

 my webview code.....
return view;
}

1 个答案:

答案 0 :(得分:0)

您可以使用此处讨论的方法:Android - How To Override the "Back" button so it doesn't Finish() my Activity?如果您想按下后退按钮进行自己的操作。

此外,您可以提供如下所示的向上导航:http://developer.android.com/training/implementing-navigation/ancestral.html

我个人更喜欢第二个选项