我有一个使用SherlockFragment和hamburger菜单的应用程序,由jeremyfeinstein“SlidingMenu” 我的应用程序也使用zxing条码扫描器
当我输入片段时,在片段中我有一个启动条形码扫描器的按钮,
但我需要的是当片段进入时,启动扫描仪, 然后当扫描仪视图被解雇时,不要做任何事情,
问题是现在我有了我的扫描();
里面
onCreateView
因此,当扫描仪被解雇时,它会再次发射,
这里有一些代码,
在PhoneMenuList.java中,片段被调用:
private void switchFragment(Fragment fragment, int index) {
if (getActivity() == null)
return;
/*
// doesnt work
if (newContent instanceof PhoneValidateView) {
((PhoneValidateView) newContent).scan();
}
*/
MainActivityPhone change = (MainActivityPhone) getActivity();
change.switchContent(newContent);
}
然后在PhoneValidateView.java
public class PhoneValidateView extends SherlockFragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
scan();
}
... }
那么如何在表格加载片段时显示“scan()”?不是每次都出现片段吗?
谢谢!
答案 0 :(得分:2)
向您的片段添加状态,并且仅在处于初始状态时调用scan()
。
private boolean mScannerLaunched = false;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
// ...
mScannerLaunched = savedInstanceState != null && savedInstanceState.getBoolean("mScannerLaunched", false);
if (!mScannerLaunched) {
scan();
mScannerLaunched = true;
}
}
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putBoolean("mScannerLaunched", mScannerLaunched);
}