AlertDialog.Builder
をActivity
で呼び出されるメソッド内で使用したいのですが、このメソッドはService
の内部に定義されていますので、これとActivity
などは動作していないようです。 :AlertDialog.Builderのコンストラクタに適切なコンテキストを取得するにはどうすればよいですか?
public class BluetoothLeService extends Service {
...
public void setCharacteristicNotification(BluetoothGattCharacteristic characteristic, boolean enabled)
AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT);
builder.setMessage("Write the CCCD Descriptor?").setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
}
あなたは上で見たこの方法は、中に呼び出されます:のLEA、今、私が取得するための適切なコンテキストが何であるかを知らない
public class DeviceControlActivity extends Activity {
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
...
if ((UserValueCharacteristic.PROPERTY_NOTIFY) > 0) {
mNotifyCharacteristic = UserValueCharacteristic;
mBluetoothLeService.setCharacteristicNotification(
UserValueCharacteristic, true);
}
}
}
}
それらを得る方法。
this (return unable to add window token null error during run time)
DeviceControlActivity.this (won't compile, saying class is non-closing)
DeviceControlActivity.getapplication()
DeviceControlActivity.getapplication().this
およびそれらのこれまでのところどれも:私はAlertDialog.Builder
だけ活動Context
を取ることを決定し、最も可能性の高いActivity
Context
それは取得する必要がDeviceControlActivity
に属し、私が試した少し研究して
働いた。
これはアンドロイドAPIの設計上の欠陥のように感じ始めますが、これは本当に不合理です。ポップアップメッセージはあんなに面倒ではありません。
誰かお手伝いできますか?
Applicationクラスを拡張するクラスを追加し、そののonCreateメソッドでそのオブジェクトをインスタンス化活動のコンテキストを渡す活動からメソッドを呼び出しますクラス。今すぐあなたのサービスでこのようなコンテキストを取得するMyApplicationClass.getInstance()。getApplicationContext(); –