从 ListView 的项目图像中抛出的二维码 reader
QR code reader thrown from an image of an item of a ListView
我希望在按下项目的图像时启动库 zxing 提供的 QR 码 reader。
我测试了两个选项。
第一个选项是我的自定义适配器尝试启动意图。
第二个选项一直在第一个和本论坛的一个主题之后,我在主要 class 中得到了我的自定义适配器,我创建了两个方法。
最后一个选项给我语法错误,但是如果你运行:
android.content.ActivityNotFoundException:在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1659)
未发现 Activity 处理 Intent { act=com.google.zxing.client.android.SCAN(有额外的)}
实际上,这是我的代码:
public class Inventario extends Activity implements OnItemClickListener {
private ArrayList<Obra> obras;
private ListView lvObras;
private ObrasAdapter adapter;
private TextView num, iden,ubi,hombres,material;
private int pulsado = -1;
Toast toast1 ;
private int operacion = -1;
List<String> equiDisp;
ArrayList<String> marcado;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inventario);
equiDisp = new ArrayList<String>();
marcado = new ArrayList<String>();
for(int i=1; i<11; i++)
{
equiDisp.add(String.valueOf(i));
}
// Inicializamos las variables.
obras = new ArrayList<Obra>();
rellenarArrayList();
actualizarDisplay();
}
...
public void abrirLector(){
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
public void actualizarDisplay()
{
adapter = new ObrasAdapter(this, obras);
lvObras = (ListView) findViewById(R.id.lvItems);
lvObras.setAdapter(adapter);
lvObras.setOnItemClickListener(this);
}
public class ObrasAdapter extends ArrayAdapter<Obra> {
public Context context;
private ArrayList<Obra> datos;
public void DisplayProjectListAdapter(Context c) {
context = c;
}
public ObrasAdapter(Context context, ArrayList<Obra> datos) {
super(context, R.layout.listview_item, datos);
this.context = context;
this.datos = datos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View item = convertView;
ObrasHolder holder;
if (item == null) {
item = LayoutInflater.from(context).inflate(R.layout.listview_item,
null);
holder = new ObrasHolder();
holder.qr = (ImageView) item.findViewById(R.id.qr);
item.setTag(holder);
}
holder = (ObrasHolder) item.getTag();
holder.qr.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
holder.qr.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
abrirLector();
}
});
}
});
return item;
}
谁能帮帮我?谢谢
在获取视图方法中添加holder.qr.setOnClickListener(new OnImageClickListener());
。
然后给这个class添加一个内在的class:
private class OnImageClickListener implements OnClickListener {
@Override
public void onClick(View v) {
Main sct = (Main) activity;
sct.onClick();
return void;
}
然后继续将名为 onClick() 的方法添加到 Main activity 并添加代码以调用该方法中的意图
您遇到的与 ActivityNotFoundException
相关的问题可以通过您在 this link 中找到的步骤解决。这是 zxing 的官方文档,告诉您如何在他们提供的对话框中打开扫描仪。将其替换为您的代码:
public void abrirLector(){
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
我希望在按下项目的图像时启动库 zxing 提供的 QR 码 reader。
我测试了两个选项。 第一个选项是我的自定义适配器尝试启动意图。
第二个选项一直在第一个和本论坛的一个主题之后,我在主要 class 中得到了我的自定义适配器,我创建了两个方法。
最后一个选项给我语法错误,但是如果你运行: android.content.ActivityNotFoundException:在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1659)
未发现 Activity 处理 Intent { act=com.google.zxing.client.android.SCAN(有额外的)}实际上,这是我的代码:
public class Inventario extends Activity implements OnItemClickListener {
private ArrayList<Obra> obras;
private ListView lvObras;
private ObrasAdapter adapter;
private TextView num, iden,ubi,hombres,material;
private int pulsado = -1;
Toast toast1 ;
private int operacion = -1;
List<String> equiDisp;
ArrayList<String> marcado;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inventario);
equiDisp = new ArrayList<String>();
marcado = new ArrayList<String>();
for(int i=1; i<11; i++)
{
equiDisp.add(String.valueOf(i));
}
// Inicializamos las variables.
obras = new ArrayList<Obra>();
rellenarArrayList();
actualizarDisplay();
}
...
public void abrirLector(){
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
public void actualizarDisplay()
{
adapter = new ObrasAdapter(this, obras);
lvObras = (ListView) findViewById(R.id.lvItems);
lvObras.setAdapter(adapter);
lvObras.setOnItemClickListener(this);
}
public class ObrasAdapter extends ArrayAdapter<Obra> {
public Context context;
private ArrayList<Obra> datos;
public void DisplayProjectListAdapter(Context c) {
context = c;
}
public ObrasAdapter(Context context, ArrayList<Obra> datos) {
super(context, R.layout.listview_item, datos);
this.context = context;
this.datos = datos;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View item = convertView;
ObrasHolder holder;
if (item == null) {
item = LayoutInflater.from(context).inflate(R.layout.listview_item,
null);
holder = new ObrasHolder();
holder.qr = (ImageView) item.findViewById(R.id.qr);
item.setTag(holder);
}
holder = (ObrasHolder) item.getTag();
holder.qr.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
holder.qr.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
abrirLector();
}
});
}
});
return item;
}
谁能帮帮我?谢谢
在获取视图方法中添加holder.qr.setOnClickListener(new OnImageClickListener());
。
然后给这个class添加一个内在的class:
private class OnImageClickListener implements OnClickListener {
@Override
public void onClick(View v) {
Main sct = (Main) activity;
sct.onClick();
return void;
}
然后继续将名为 onClick() 的方法添加到 Main activity 并添加代码以调用该方法中的意图
您遇到的与 ActivityNotFoundException
相关的问题可以通过您在 this link 中找到的步骤解决。这是 zxing 的官方文档,告诉您如何在他们提供的对话框中打开扫描仪。将其替换为您的代码:
public void abrirLector(){
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}