0

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

谢谢!

4

1 回答 1

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);
}
于 2013-09-13T03:42:24.890 回答