2012-06-11 5 views
0

Quelqu'un peut-il me dire comment je peux passer correctement mon contexte d'application à mon bouton setOnClickListener?Android passer contexte à onclicklistener

Je tente de scanner des codes-barres lorsque je clique sur un "bouton de numérisation" défini dans mon code de disposition en utilisant Zxing.

Voici mon code:

public class ScaningActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
      } 
     });//close upload clicklistener 

    final Button scan = (Button)findViewById(R.id.scanButton); 
     scan.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

       Context c = getApplicationContext(); 

       // TODO Auto-generated method stub 
       IntentIntegrator integrator = new IntentIntegrator(c); 
       integrator.initiateScan(); 
      } 
     }); 

    }//close onCreate 
     public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
      IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
      if (scanResult != null) { 
      // handle scan result 
      Log.e("DATA", "TESTING SCAN RESULT : " + scanResult.toString()); 
      }else{ 
       Log.d("DATA", "NO SCAN RESULTS : ");// + scanResult.getFormatName());//scanResult.getContents()); 
      } 

     } 
}//close ScaningActivity 

Le problème est IntentIntegrator ne reconnaît pas le contexte l'argument Je Suppling comme dans ce qui suit:

Context c = getApplicationContext(); 
IntentIntegrator integrator = new IntentIntegrator(c); 
+0

Constructor prend une activité non un contexte. –

Répondre

8

Essayez de remplacer

Context c = getApplicationContext(); 

par

Context c = ScaningActivity.this; 
0

Pour Context vous devez envoyer votre nom d'activité ou celui-ci:

IntentIntegrator integrator = new IntentIntegrator(Your_Activity_name Or this);

+3

'this' dans le contexte de sa source retournerait l'instance actuelle de' OnClickListener', qui n'est pas une extension de 'Context'. Il devrait utiliser 'ScanningActivity.this' ou passer un' Context' à travers un constructeur. –

+0

ScanningActivity.this a fonctionné. Fournissez-le comme une réponse – sisko