Android - Как получить доступ к контенту класса из другого?

На самом деле я работаю над приложением Android, которое предоставляет пользователю соединение с сервером DataSnap, но у меня возникла проблема с моим классом NetworkManager.

Хотелось бы, чтобы у меня был доступ к его содержимому (пользователь, хост, порт...), но я не могу и не нашел решения в Интернете (или, может быть, я не прочитал все сообщения)

Вот мой код для сетевого менеджера:

package com.smdroid;

import com.embarcadero.javaandroid.DSProxy.TServerMethods1;
import com.embarcadero.javaandroid.DSRESTConnection;

public class NetworkManager{
    DSRESTConnection     conn = new DSRESTConnection();
    TServerMethods1      proxy;
    int                  servId = 0;
}

и где я хочу позвонить своему классу и получить доступ к контенту:

    public class ServerMenu extends Fragment {

    TJSONArray      servList;
    NetworkManager  nm = NetworkManager;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                 Bundle savedInstanceState) {

         final View servView = inflater.inflate(R.layout.server_menu, container, false);

         try {
            System.out.println(nm.proxy.ReverseString("reverse test"));
         } catch (DBXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }

         return servView; 
    };
 }

Если бы кто-то мог мне помочь, было бы неплохо. Спасибо вам =) С уважением, Пьер

2 ответа

Решение

Обычно в Java, когда у вас есть класс с некоторыми атрибутами, есть несколько способов сделать их доступными.

  1. Сделать атрибуты общедоступными
  2. Сделайте атрибуты приватными и предоставьте методы get и set. Условием является использование get или set с первой буквой имени атрибута в верхнем регистре. Эти методы должны быть публичными

Обычно решение n.2 является лучшим, потому что вы избегаете прямого доступа к закрытым атрибутам из других классов (см. Инкапсуляция).

В общем, но не в вашем случае, когда вы объявляете атрибуты так, как вы это сделали, вы делаете их доступ "по умолчанию", чтобы вы могли получить к ним доступ из другого класса, расширяющего ваш NetworkManager в том же пакете.

Если этот класс является просто держателем параметров конфигурации, вы можете даже сделать эти атрибуты статическими и общедоступными, поэтому вам не нужно создавать экземпляр класса для доступа к ним.

Поместите в свой класс NetworkManager открытый метод, который возвращает объекты - например, public TServerMethods1 getProxy(){ return proxy; }

Другие вопросы по тегам