2012-06-11 71 views
0

任何人都可以告訴我如何正確地將我的應用程序上下文傳遞給我的按鈕setOnClickListener?Android傳遞上下文到onclicklistener

我試圖掃描條形碼時,我點擊了我的佈局代碼中使用Zxing定義的「掃描按鈕」。

以下是我的代碼:

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 

問題是IntentIntegrator不承認方面說法我suppling爲以下幾點:

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

構造函數採用活動不是一個語境。 –

回答

8

嘗試更換

Context c = getApplicationContext(); 

通過

Context c = ScaningActivity.this; 
0

對於Context你需要發送你的活動名或這個:

IntentIntegrator integrator = new IntentIntegrator(Your_Activity_name Or this);

+3

'this'在他的源語境中會返回'OnClickListener'的當前實例,它不是'Context'的擴展。他將不得不使用'ScanningActivity.this'或通過構造函數傳遞'Context'。 –

+0

ScanningActivity.this工作。提供它作爲答案 – sisko