Sie können kein Objekt von Ihrem Dienst erstellen. Ich denke du bist neu in Java. Wenn Sie CheckActivity check = new CheckActivity()
tun, wird eine neue Instanz Ihrer CheckActivity
erstellt und ohne Zweifel wird es Null zurückgeben. Auch sollten Sie nie Objekte von Aktivitäten wie diese auf Android erstellen.
Soweit Ihre Frage betroffen ist, können Sie Ihren editText-Wert über einen Broadcast-Empfänger an Ihren Dienst weitergeben.
Werfen Sie einen Blick auf this.
Auch wenn Sie den Wert editText haben, bevor Sie den Dienst erstellen, können Sie ihn einfach als intent extra übergeben, sonst können Sie den Broadcast-Ansatz verwenden.
In Ihrem Service
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equalsIgnoreCase("getting_data")) {
intent.getStringExtra("value")
}
}
};
IntentFilter intentFilter = new IntentFilter();
// set the custom action
intentFilter.addAction("getting_data"); //Action is just a string used to identify the receiver as there can be many in your app so it helps deciding which receiver should receive the intent.
// register the receiver
registerReceiver(broadcastReceiver, intentFilter);
In Ihrer Tätigkeit
Intent broadcast1 = new Intent("getting_data");
broadcast.putExtra("value", editext.getText()+"");
sendBroadcast(broadcast1);
auch Ihren Empfänger in onCreate der Tätigkeit erklären und unregeister es in onDestroy
unregisterReceiver(broadcastReceiver);
https://www.youtube .com/watch? v = lnd0oPSzoJg das ist eine große Frage. Ein Service kann im selben Prozess gebunden oder gestartet werden. In diesem Fall können Sie einfach eine öffentliche statische Variable auf beiden Seiten (Service oder Aktivität) in einem separaten Service verwenden. Sie können Messenger oder AIDL verwenden, indem Sie Aktivitäten als Intents starten CheckActivity check = neu CheckActivity(); – Pomagranite
Die Variable funktioniert statisch, danke. –