私はここで私の機知に富んでいます。OnClickListener
アプリケーションのボタンで同じアクションが必要な場合を実装するクラスがあります。これは以前はうまく機能していました。しかし、アプリの設定から必要なデータを取得して機能を追加したためです。startActivity
null ポインター例外をスローします。
クラスは次のとおりです。
//Imports
public class CallClickListener extends Activity implements View.OnClickListener {
protected AppPreferences appPrefs;
String contactPersonName;
String contactPersonTelephone;
String name;
public CallClickListener(Context context){
Log.d("TRACE", "init CallClick");
appPrefs = new AppPreferences(context);
try {
JSONObject object = appPrefs.getConsultantObject();
contactPersonName = object.getString("contactPersonName");
contactPersonTelephone = object.getString("contactPersonTelephone");
name = object.getString("name");
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onClick(View view) {
final View v = view;
AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());
alert.setTitle("Anrufen");
alert.setMessage("Kontakt für " + name + ", " + contactPersonName + " anrufen");
alert.setPositiveButton("Anrufen", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+contactPersonTelephone));
startActivity(callIntent);// this line throws the exception
}
});
alert.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(v.getContext(), "Abbruch", Toast.LENGTH_SHORT).show();
}
});
alert.show();
}
}
文字列はすべてappPrefsからのものです。念のため、電話番号をハードコーディングしてみました。アラートは正常に機能しますが、正のボタンを押すとすぐにアプリがクラッシュ
します。次のようにリスナーを追加します。
bCall.setOnClickListener(new CallClickListener(getApplicationContext()));
必要な通話権限を追加しました。
私はAndroid開発にかなり慣れていませんが、何が欠けていますか?