Почему getIntent () ошибка красная линия в моем коде? - PullRequest
0 голосов
/ 06 мая 2019

Я хочу отправить данные о доставке из MainActivity в LocationService.но когда я хочу получить данные на LocationService и введите эту строку кода.Но закончилась ошибкой красной линией.

я пробовал это getIntent () написал красным , но я хочу использовать объект в другом методе, и все объекты становятся нулевыми.

Intent intent = getIntent();

enter image description here

Я надеюсь, что вы, ребята, можете помочь, и, возможно, есть другие предложения.спасибо

Ответы [ 4 ]

1 голос
/ 06 мая 2019

вы можете передавать данные с помощью намерения

Intent serviceIntent= new Intent(Activity_Namethis,Service_Name.class);
serviceIntent.intent.putExtra(EXTRA_KEY, YOUR_OBJECT);
startService(serviceIntent);

Получить данные из службы

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
   YOUR_CLASS _yourClassObject = intent.getParcelableExtra(EXTRA_KEY);

   return "RETURN_FLAG";
}

вы также можете объединить все свои данные и добавить, что t enter code here o ваше намерение

0 голосов
/ 06 мая 2019

Вы также можете использовать getIntent().getParcelableExtra(EXTRA_INFO); вам не нужно создавать переменную намерения, в которой болит getIntent (), просто получите ее напрямую.

0 голосов
/ 06 мая 2019

Вы можете использовать IntentService для такой работы:

public class LocationService extends IntentService {
    public LocationService() {
        super("LocationService");
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {

    }

    @Override
    public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
        //Get data from intent here.
    }
}

Чтобы запустить и использовать IntentService:

Intent serviceIntent = new Intent(context, LocationService.class);
startService(serviceIntent);

от деятельности. И вы можете передавать любые данные в объект serviceIntent.

0 голосов
/ 06 мая 2019

Поскольку вы пытаетесь вызвать getIntent из службы, так что это не метод класса службы, вам необходимо иметь ссылку на класс Activity перед вызовом, например

activity.getIntent()

Отредактировано:

Теперь для отправки данных из активности в службу вы можете реализовать интерфейс

Объявить интерфейс

 public interface MyIntentListener {
    public void call();
 }

Теперь реализуйте этот интерфейс в вашем сервисе, как

 class yourService extends ... implements MyIntentListener {

     // other stuff
     @override
     public void call() {
     }
 }

Теперь в Деятельности, где вы инициализируете сервис, у вас должна быть ссылка на нее, чтобы вы могли звонить куда угодно в активности

 service.call()
...