2016-07-07 73 views
-1

我想實現我的android的應用程序菜單中的一個認可方式,但它給我的錯誤,如下面ContextCompat不適用於參數

在類型ContextCompat的方法checkSelfPermission(上下文,字符串)不適用的參數(新BottomSheetListener(){},字符串)

我給這家菜單代碼就像下面

else if(menuItem.getItemId() == R.id.save_image) { 

    int gpermission = ContextCompat.checkSelfPermission(this, 
      Manifest.permission.CAMERA); 

    if (gpermission != PackageManager.PERMISSION_GRANTED) { 
     makeRequest1(); 
    } else { 
     saveQuote(); 
    } 
} 

請檢查並讓我知道如果有人能幫助我:)

+0

如果這段代碼在一個Activity類中,寫:'YourActivity.this'而不是'this',否則從父活動獲取上下文 –

+0

這是工作正常:) –

回答

3

如果這個代碼是在Activity類,寫:

YourActivity.this 

,而不是this,否則獲得從父活動的背景和使用它。

+0

真棒,而且工作正常:) –

2

相反的:

int gpermission = ContextCompat.checkSelfPermission(this, 
          Manifest.permission.CAMERA); 

這樣寫:

int gpermission = ContextCompat.checkSelfPermission(this.getContext(), 
          Manifest.permission.CAMERA); 

你引用BottomSheetListener,你應該參考Context。在構造函數BottomSheetListener中傳遞ContextActivityBottomSheet並寫入函數getContext()返回此上下文對象。

+0

現在我收到錯誤,如「該方法getContext()對於新的BottomSheetListener(){}類型是未定義的「」 –

+0

這是正確的,它也可能取決於調用ContextCompat.checkSelfPermission()的代碼從何處被調用。在一個活動的背景下,'這個'關鍵字應該在技術上起作用。 –

+0

@Rajubhai Rathod閱讀我答案的最後一句。 –