これは、(私の)次の質問の拡張です:
それはさておき、TextLabelをクリックすると、次のランタイムエラー/クラッシュが発生します。
java.lang.IllegalStateException: Could not find a method onClick(View) in the activity class org.radio.app.Contacts for onClick handler on view class android.widget.TextView with id 'contactLabel'
カスタムのOnClickListener実装が別のファイルにあるためだと思いました。アクティビティファイル自体に入れてみましたが、同じエラーが発生します。
また、TextViewのXMLには次のものがあります。
<TextView
android:id="@+id/contactLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Label"
android:textColor="@color/orange_theme_text"
android:textStyle="bold"
android:textSize="18sp"
android:paddingRight="7dp"
android:clickable="true"
android:onClick="onClick"/>
これを解決する方法について何か考えはありますか?
編集:これが私のカスタムOnClickListenerで、OnClickも定義されています:
private class ContactOCL extends Activity implements OnClickListener {
String contactInfo;
public ContactOCL(String contactInfo) {
this.contactInfo = contactInfo;
}
public void onClick(View v) {
Log.v("onClick", "Are we even getting here?");
// Check if contactInfo is an email address or a phone number
if (contactInfo.contains("@"))
{
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("mailto:" + contactInfo);
intent.setData(data);
startActivity(intent);
}
// Otherwise we have a phone number
else
{
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + contactInfo));
v.getContext().startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("Calling a Phone Number", "Call failed", activityException);
}
}
}
}
もう一度編集:これが私の活動の抜粋です:
TextLabel = (TextView) viewCI.findViewById(R.id.contactLabel);
TextLabel.setOnClickListener(new ContactOCL(info[i]));