【发布时间】:2016-04-25 11:33:11
【问题描述】:
您好,我有一个recycleview 的安卓应用程序。当用户在回收viewholder 上单击button 时。应用程序将启动webview(在fragment 内)。我想处理当用户单击返回按钮时,webview 如果有历史记录将返回,如果没有历史记录,应用程序将关闭webview 片段并返回recycleview。
有历史的时候我已经成功处理了后面(但是如果没有历史,webview就无法返回recycle view
这是我的 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();
}
}
});
【问题讨论】:
-
您是否在您的 recyclerview 所在的同一活动中使用该片段?或者您正在对片段使用单独的活动。
-
您好,感谢您的回复。我已经编辑了这个问题。我将按钮句柄放在 recycleView 适配器 ViewHolder 类中
-
((FragmentActivity) context).getSupportFragmentManager().beginTransaction() .add(R.id.item_detail_container, topStoryWebViewFragment) // 将此事务添加到后台堆栈(名称是此事务的可选名称返回堆栈状态,或为空)。 .addToBackStack(null) .commit();
-
尝试用上面的替换监听器中的 if 条件并检查..
-
像魅力一样工作。非常感谢您的帮助。
标签: android webview fragment back