Как использовать ContextCompat во фрагменте? Это говорит, что фрагмент не может быть преобразован в контекст - PullRequest
0 голосов
/ 17 января 2019

Я пытался использовать Contextcompat и ActivityCompat во фрагменте, но он показывает

ошибка «Ошибка: (49, 50) ошибка: несовместимые типы: CallFragment не может быть преобразован в контекст» и «Ошибка: (51, 51) ошибка: несовместимые типы: CallFragment не может быть преобразован в действие».

if(ContextCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CALL); 
}

Как я могу решить это?

Ответы [ 3 ]

0 голосов
/ 17 января 2019
if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CALL); } 

используйте getContext () вместо этого во фрагменте

0 голосов
/ 17 января 2019

«это» относится к фрагменту в вашем случае.

У нас это явно означает, что вам нужны ссылки Context и Activity. Поскольку вы используете код внутри класса Fragment, this <- относится к фрагменту, а не к <code>Activity или Context.

Как получить контекстную ссылку?
получите его в методе onAttachMethod(Context context), доступном в классе Fragment.

class YourFragment extends Fragment{

   private Context context;

   @Override
   public void onAttach(Context context)
   {
     this.context = context;
   }
}

Как получить ссылку на активность во фрагменте?

getActivity(); 

или

(Activity)context;
0 голосов
/ 17 января 2019
private Context context;

public Yourclassname(Context context) {
   this.context = context;
}

используйте контекст вместо "this" и используйте следующий код

if(ContextCompat.checkSelfPermission(context,android.Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(context, new String[]{android.Manifest.permission.CALL_PHONE}, REQUEST_CALL); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...