【问题标题】:onActivityResult being called before scanning using zxing在使用 zxing 扫描之前调用 onActivityResult
【发布时间】:2014-02-15 16:53:59
【问题描述】:

我正在将 zxing 扫描仪集成到我的 android 应用程序中,我遇到了一种奇怪的情况,即在扫描意图打开之前调用 onActivityResult(在启动扫描的活动中)。我查看了几个示例,我的代码似乎与我在许多教程中看到的相匹配。这是活动的代码。

package com.honeydewit;

import java.util.ArrayList;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.honeydewit.adapters.ListItemAdapter;
import com.honeydewit.listeners.OneOffClickListener;
import com.honeydewit.pojos.BasicList;
import com.honeydewit.pojos.ListItem;

public class ListHomeActivity extends BasicActivity{
   private ImageButton addItemBtn;
    private ImageButton addByScanBtn;
        private ArrayList<ListItem> lists = new ArrayList<ListItem>();
        public static  ListItemAdapter listAdapter;
private TextView headerTxt;
private BasicList basicList;
private ListView listView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listshome);
    listView =(ListView) findViewById(R.id.list);
    basicList = getApplicationContext().getCurrentList();
    headerTxt = (TextView)findViewById(R.id.headerTxt);
    headerTxt.setText(basicList.getName());
    headerTxt.setTypeface(getApplicationContext().getTypeface());
    //add button
    addItemBtn = (ImageButton)findViewById(R.id.add);
    addItemBtn.setOnClickListener(new OneOffClickListener() {

        @Override
        public void onClick(View v) {

            addToList(v, basicList);

        }
    });
    addByScanBtn = (ImageButton)findViewById(R.id.addByScan);
    addByScanBtn.setVisibility(View.VISIBLE);
    addByScanBtn.setOnClickListener(new OneOffClickListener() {

        @Override
        public void onClick(View v) {

            addToListByScan(v, basicList);

        }
    });
    setupListAdapter(basicList.get_id());


}


private void setupListAdapter(int listId) {
    populateListItems(listId);
    listAdapter = new ListItemAdapter(this, R.layout.listrow, lists);
    listView.setAdapter(listAdapter);
}


private void populateListItems(int listId) {
    ArrayList<ListItem> items = (ArrayList<ListItem>)getApplicationContext().getShoppingListDbHelper().getShoppingListItems(listId);
    for(ListItem item : items ) {
        lists.add(item);
    }
}


private void addToList(View view, BasicList list) {

    if(basicList.getListTypeId() == Constants.TODO_LIST_TYPE_CDE) {
        Intent newListIntent = new Intent(getBaseContext(), ToDoItemActivity.class);
        startActivityForResult(newListIntent, 1);
    }
    else {
        Intent newListIntent = new Intent(getBaseContext(), ItemActivity.class);
        startActivityForResult(newListIntent, 1);
    }

}
private void addToListByScan(View view, BasicList list) {
    try {

        IntentIntegrator zxingIntegrator = new IntentIntegrator(this);  
        zxingIntegrator.initiateScan();

    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(), "ERROR:" + e, 1).show();

    }

}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            Log.d(getClass().getName(), scanResult.getContents());
            Log.d(getClass().getName(), scanResult.getFormatName());
            Log.d(getClass().getName(),data.getStringExtra("SCAN_RESULT_FORMAT"));
            Log.d(getClass().getName(),data.getStringExtra("SCAN_RESULT"));
        }
    }

}



}

【问题讨论】:

标签: android zxing


【解决方案1】:

onActivityResultAndroid 调用,只要您的应用需要被告知 Intent。那可能来自很多地方。您可以通过查看请求代码并将其与IntentIntegrator 中的代码进行比较来了解。或者让那个班级为你做这一切。

我猜你的intent-filter 太宽泛了,你听到的东西是你意想不到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2022-01-23
    相关资源
    最近更新 更多