Отправить Android View с сервера на клиент

#android #view #client #send

#Android #Вид #клиент #Отправить

Вопрос:

Я хочу отправить (текстовый) элемент представления из серверного приложения (= ‘normal’, не для Android Java) в приложение Android на телефоне и отобразить его там. Создаем его таким образом на сервере…

TextView tv=new TextView(Client.myClient);

… выдает мне эту ошибку:

Exception in thread "main" java.lang.RuntimeException: Stub!

myClient определяется следующим образом в Client :

public static Client myClient; .

В onCreate() на Client я написал myClient=this; .

( Server имеет доступ ко всем Client классам, так что это не проблема.)

Что я делаю не так? Могу ли я, возможно, создать TextView с другим контекстом, отличным от контекста клиента, отправить его, а затем отобразить на клиенте? (Позже я захочу отправлять произвольные представления, вот почему я отправляю не только строку TextView.) Заранее большое спасибо!

Комментарии:

1. Вы должны отправлять только текстовое значение String с сервера и создавать TextView на устройстве Android. Вы делаете странную вещь

2. Рассматривая только эту проблему, вы, безусловно, правы, но я хотел бы иметь возможность отправлять на телефон все мыслимые пользовательские интерфейсы. Использование TextView — это всего лишь простой пример.

Ответ №1:

Не уверен, что вы можете это сделать: насколько я могу судить Context , он не сериализуем или иным образом не передается. Возможно, вам удастся разработать удобный язык описания (возможно, перенести полный XML и повторно обработать его на клиенте?) но не уверен, что вы можете сделать то, что вы описали выше, из коробки.

Комментарии:

1. Спасибо за ваш быстрый ответ! Контекст не сериализуем, уже пробовал это. Хорошо, я посмотрю, как передать XML-файл — или вы сразу знаете, как это сделать?

2. Вы просто создаете XML точно так же, как для макета, и используете LayoutInflater, чтобы превратить его в представление.

3. Потратил довольно много времени, пытаясь заставить это работать. Теперь я могу превратить XML-файл в представление, проблема в том, откуда взять этот XML-файл. Поскольку моя серверная программа — обычная Java, я не могу просто поместить туда XML-файл и получить к нему доступ через R.layout.*. Я уже пытался создать новый класс Android, затем получить доступ к одному из его XML-файлов через R.layout.* и превратить его в представление, а затем заставить сервер принять это, но я продолжаю получать эту ошибку ‘stub’.

4. Ах, Android преобразует XML-файлы в проекте в другой формат во время компиляции: необработанные XML-байты — это не то, что используется при раздувании представления. Вам нужно перепрыгнуть через специальные обручи, чтобы сгенерировать представление из файла с XML в нем, и я не уверен, что это за обручи.

5. Пытался решить это грязным способом, раздув XML-файл на клиенте, отправив его на сервер и обратно клиенту. (Думаю, что позже я мог бы отправить представление с другого эмулируемого клиента.) Теперь я получаю эту ошибку, однако: writing aborted; java.io.NotSerializableException: android.widget.RelativeLayout Означает ли это, что нет способа сериализовать RelativeLayout или какие-либо макеты?