0

組み込みの戻るボタンを使用して、Web ビュー内またはアプリ内 (場所に関係なく) 1 画面戻るようにしようとしています。そのため、ニュース セクションがあり、それをクリックすると、ニュースページ。次に、[検索] をクリックして Web ビューに移動し、[戻る] をクリックすると、最後に開いたニュース セクションのページが表示されます。また、私がウェブビューにいて、ウェブビュー内をナビゲートして戻ると、ウェブビュー内のページが表示されます。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;
}
4

1 に答える 1

0

ここで説明した方法を使用できます: Android - 「戻る」ボタンをオーバーライドして、アクティビティを Finish() しないようにする方法は? 戻るボタンを押したときに独自のアクションを実行したい場合。

また、ここに示すようにアップ ナビゲーションを提供することもできます: http://developer.android.com/training/implementing-navigation/ancestral.html

私は個人的に2番目のオプションを好みます

于 2013-09-19T15:32:29.327 に答える