2017-11-25 171 views
-1

我已经创建了一个选项卡布局。我想要拨打一个号码,我必须定义onCLickListener,请参阅下面Tab2中写的代码: 在此错误显示中,MainActivity.this不是封闭类,所以我应该写什么而不是这个? (tab2.xml是选项卡的版式文件的名称)无法使用TabLayout中的呼叫功能进行呼叫

package com.firstapp.admin.herbalteaco; 

import android.Manifest; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.net.Uri; 

import android.support.v4.app.ActivityCompat; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

/** 
* Created by admin on 11/25/2017. 
*/ 

public class Tab2 extends Fragment implements View.OnClickListener{ 


private TextView tvCall; 
private Button btnLogin; 


@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.tab2 , container , false); 

} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    btnLogin = (Button) btnLogin.findViewById(R.id.btnLogin); 
    btnLogin.setOnClickListener(this); 

    tvCall = (TextView) tvCall.findViewById(R.id.tvCall); 
    tvCall.setOnClickListener((new View.OnClickListener() { 
     public void onClick(View arg0) { 
      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:+91999999999"));; 
      if (ActivityCompat.checkSelfPermission(MainActivity.this, 
        Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
       return; 
      } 
      startActivity(callIntent); 
     } 
    })); 

} 
+0

使用'的getContext()''而不是MainActivity.this' –

+0

使用getApplicationContext(),而不是MainActivity.this –

+0

的应用是越来越坠毁,机上使用的getContext() –

回答

0

试试下面的代码

定义像下面

int REQUEST_CALL=101; 

请求允许全球vairable像下面

if (ActivityCompat.checkSelfPermission(getContext(), 
        android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(getActivity(), 
       new String[]{android.Manifest.permission.CALL_PHONE}, 
       REQUEST_CALL); 
    } else { 
     Log.e("DB", "PERMISSION GRANTED"); 
     // do your call 

    } 

不要” t忘记处理onRequestion权限,如下面的

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String permissions[], int[] grantResults) { 
    if(requestCode == REQUEST_CALL){ 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
       && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

       // permission was granted, yay! Do the 
       // Call task you need to do. 

      } else { 

       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
      } 
     } 
    } 
+0

REQUEST_CALL没有定义,我应该如何界定呢? –

+0

@ A.Rathi查看我的更新回答 – Munir

0

您可以在扩展Fragment的类中调用getActivity()。这会给你带有片段的Activity实例。由于ActivityContext的子类,因此您可以在需要的任何地方使用此实例Context

+0

请提供我的.java文件的确切代码 –

+0

@ A.Rathi这不是一个代码编写服务。希望你可以把这里给出的答案放在一起来自己弄清楚。如果不是,我建议你研究遗传和多态性。 –