2013-05-06 4 views
0

im фактически работает над приложением Android, которое предоставляет пользователю связь с сервером DataSnap, но у меня возникла проблема с моим классом NetworkManager.Android - Как получить доступ к содержимому класса из другого?

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

Существует мой код для менеджера сети:

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; 
    }; 
} 

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

ответ

0

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

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

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

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

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

+0

Я должен использовать свой мозг и делать как в C++. Спасибо за совет ^^ – Jackyto

0

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

+0

Бог, я так глуп, просто положил геттеры/сеттеры><. Большое спасибо =] – Jackyto

Смежные вопросы