【问题标题】:android launch zxing scanner only after entering fragmentandroid仅在输入片段后启动zxing扫描仪
【发布时间】:2013-09-13 12:44:26
【问题描述】:

我有一个使用 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()”?不是每次fragment都会出现?

谢谢!

【问题讨论】:

    标签: android android-fragments zxing


    【解决方案1】:

    给你的片段添加一个状态并且只在它处于初始状态时调用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);
    }
    

    【讨论】:

    • 嗨,只需要设置 boolean = false,所以它不会启动新的扫描仪,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多