2016-04-25 50 views
0

嗨,我有一個Android應用程序,其中一個recycleview。當用戶點擊一個button在回收viewholder。應用程序將啓動webview(在fragment之內)。當用戶點擊後退按鈕時,我想要處理,如果有歷史記錄,webview會咕and,如果沒有歷史記錄,應用程序將關閉webview片段並返回recycleviewwebview片段按回去

我都有成功處理回時,有一個歷史(但WebView中不能回來,如果沒有歷史

這裏回收觀點是我的WebView代碼

webView.setOnKeyListener(new View.OnKeyListener() { 

       public boolean onKey(View v, int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
         if (webView.canGoBack()) { 
          webView.goBack(); 
         }else { 
          getActivity().getSupportFragmentManager().popBackStack(); 
         } 
         return true; 
        } 
        return false; 
       } 

      }); 

什麼不對這些代碼?任何幫助是非常讚賞。謝謝

編輯我使用內部recycleviewadapter類,這些代碼來處理按鈕點擊ViewHolder

url.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Bundle bundle = new Bundle(); 
        bundle.putString("topStoryUrl", topStories.get(getLayoutPosition()).getUrl()); 

        TopStoryWebView topStoryWebViewFragment = new TopStoryWebView(); 
        topStoryWebViewFragment.setArguments(bundle); 
        if (ItemListActivity.mTwoPane) { 

         ((FragmentActivity) context).getSupportFragmentManager() 
           .beginTransaction() 
           .add(R.id.item_detail_container, topStoryWebViewFragment) 
           .commit(); 
        } else { 
         topStoryWebViewFragment.setArguments(bundle); 
         ((FragmentActivity) context).getSupportFragmentManager() 
           .beginTransaction() 
           .add(R.id.frameLayout, topStoryWebViewFragment) 
           .commit(); 
        } 
       } 
      }); 
+0

您使用在同一活動的片段在您recyclerview的療​​法?或者您正在使用單獨的片段活動。 –

+0

嗨,謝謝你的回覆。我編輯了這個問題。我把按鈕把手裏面recycleView適配器ViewHolder類 –

+0

((FragmentActivity)上下文).getSupportFragmentManager()。beginTransaction() .add(R.id.item_detail_container,topStoryWebViewFragment) //將此事務添加到後端堆棧(名稱是此後退堆棧狀態的可選名稱,或null)。 .addToBackStack(null) .commit(); –

回答

1

addToBackStack會增加您的片段堆棧,你可以訪問這個堆棧後

((FragmentActivity) context).getSupportFragmentManager() 
.beginTransaction() 
.add(R.id.item_detail_container, topStoryWebViewFragment) 
// Add this transaction to the back stack (name is an optional name for this back stack state, or null). 
.addToBackStack(null) 
.commit(); 
+0

非常感謝您的幫助。順便說一句,我怎麼能命名後面,並在稍後回調(例如返回到特定的後退狀態,而不是大多數當前後退狀態 –

+0

對不起,我還不知道,如果我有任何解決方案,我會ping你。 –