我的Fragment上有一个WebView。但是,我想在" onBackPressed()"上调用一个方法,而不是调用goBack我的WebView。当我点击后退按钮时,我的WebView总是返回到上一页,而根本没有调用我的方法。
@Override
public void onBackPressed() {
if (getSupportFragmentManager().findFragmentByTag("myTag") != null) {
if(myWebView.canGoBack())
//myWebView.goBack();
}else {
super.onBackPressed();
saveAllData();
}
}else{
super.onBackPressed();
saveAllData();
}
}
我尝试了不同的方法,但它不起作用,见下文: 编辑1:
在我的Fragment1上:
public void backButtonWasPressed() {
saveAllData();
}
关于我的活动:
@Override
public void onBackPressed() {
super.onBackPressed();
FragmentManager fm = getSupportFragmentManager();
TopicFragment fragment1 = (TopicFragment)fm.findFragmentById(R.id.content_frame);
fragment1.backButtonWasPressed();
}
请帮忙。
谢谢
答案 0 :(得分:0)
它正在发生,因为您正在将片段添加到backstack。在提交fragmenttransaction之前添加此代码
transaction.addToBackStack(null);
示例:
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();