2016-08-09 4 views
0

をクリックすると、電話は私がこの問題のために多くのことを探索したが、私は私の状況のた​​めに良い答えを見つけるように見えることはできません。基本的には、ユーザーがテキストをクリックすると、自分の電話(Androidスタジオのエミュレータ)で電話番号(この場合は101)に電話をかけたいと思っています。アンドロイド - の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); を使用しています。

あなたのTextViewがあなたの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: –

+0

reference' nullオブジェクト上の仮想メソッドを呼び出そうと「無効android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)」それはまだあなたがonclickのリスナーをオンに設定しようとしていると言いますボタン。あなたのコードで何かが間違っています。もう一度確認できますか?また、あなたのXMLに '' 'android:clickable =" true "' 'を追加すれば十分です –

+0

何か不足していますか? http://prntscr.com/c3r751 –

関連する問題