[英]webview fragment press back to return to
嗨,我有一個recycleview
的android應用程序。 當用戶單擊回收viewholder
button
上的button
時。 應用程序將啟動一個webview
(在fragment
)。 我想處理用戶單擊“后退”按鈕時,如果有歷史記錄,則webview
將返回,如果沒有歷史記錄,則該應用程序將關閉webview
片段,然后返回recycleview
。
有歷史記錄時,我可以成功處理后退(但如果沒有歷史記錄,則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;
}
});
這些代碼有什么問題嗎? 任何幫助都非常感謝。 謝謝
編輯我在recycleview
adapter
類中使用這些代碼來處理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();
}
}
});
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.