2016-08-09 1 views
0

이 문제를 많이 조사했지만 상황에 맞는 답변을 찾지 못하는 것 같습니다. 기본적으로 사용자가 텍스트를 클릭하면 내 전화 (Android Studio의 에뮬레이터)에서 전화 번호 (이 경우에는 101)로 자동 전화를 걸기를 원합니다.Android - TextView (API 14)를 클릭하면 전화가 걸립니다.

더 좋은 제안이나 제안 사항이 있으면 언제든지 공유하십시오. 주셔서 감사합니다

XML :

<TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/police" 
      android:layout_centerHorizontal="true" 
      android:gravity="center_horizontal" 
      android:clickable="true" 
      android:id="@+id/call" 
      android:onClick="call" 
      android:autoLink="phone" 
      android:text="101" 
      android:textColor="@android:color/black" 
      android:textSize="25sp"></TextView> 

MainActivity :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button button = (Button) findViewById(R.id.call); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      call(v); 
     } 
    }); 

} 

public void call(View v) { 
    Intent callIntent = new Intent(Intent.ACTION_DIAL); 
    callIntent.setData(Uri.parse("tel:123456789")); 
    if (Build.VERSION.SDK_INT >= VERSION_CODES.M) { 
     if (checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 
    } 
    startActivity(callIntent); 
} 

의 AndroidManifest.xml :

가 나는 또한

전에 다음 코드 줄을 추가
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 

오류 : XML에

java.lang.RuntimeException: Unable to start activity ComponentInfo{com...MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 

답변

1

당신이 TextView을 사용하고 있습니다. 귀하의 코드에서 사용하고 있습니다 Button button = (Button) findViewById(R.id.call); 그들은 동일해야합니다.

텍스트 뷰를 클릭 할 수있게하려면 XML에 추가하십시오.

android:clickable="true" 

그런 다음 코드에서 당신이 있지만 여전히 오류가 시도이

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView tv = (TextView) findViewById(R.id.call); 

    tv.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      call(v); 
     } 
    }); 

    } 
+0

과 같은 작업을 수행 할 수 있습니다. java.lang.NullPointerException : null 객체 참조에서 'android.widget.Button.setOnClickListener (android.view.View $ OnClickListener)'가상 메서드를 호출하려고 시도했습니다. –

+0

여전히 onclick listener를 on으로 설정하려고한다고합니다. 단추. 귀하의 코드에서 뭔가 잘못되었습니다. 다시 확인할 수 있니? 또한 XML에'''android : clickable = "true"''를 추가하는 것으로 충분합니다 –

+0

누락 된 것이 있습니까? http://prntscr.com/c3r751 –