android仅在输入片段后才启动zxing扫描仪

android仅在输入片段后才启动zxing扫描仪,android,android-fragments,zxing,Android,Android Fragments,Zxing,我有一个应用程序,使用jeremyfeinstein的SherlockFragment和汉堡包菜单“SlidingMenu” 我的应用程序也使用zxing条形码扫描仪 当我输入一个片段时,在片段中我有一个启动条形码扫描仪的按钮 但我需要的是当碎片进入时,启动扫描仪, 然后当扫描器视图被取消时,不要做任何事情 问题是现在我有了我的 扫描() 里面 onCreateView 所以当扫描器被关闭时,它会再次启动 这里有一些代码 在PhoneMenuList.java中,调用片段: private vo

我有一个应用程序,使用jeremyfeinstein的SherlockFragment和汉堡包菜单“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()”?不是每次碎片出现的时候


谢谢

将状态添加到片段中,并且仅在片段处于初始状态时调用
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);
}

您好,只需将布尔值设为false,这样就不会启动新的扫描仪,谢谢!