【问题标题】:Android - How to access class content from another?Android - 如何从另一个访问课程内容?
【发布时间】:2013-05-06 14:02:25
【问题描述】:

我实际上正在开发一个 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; 
    };
 }

如果有人可以帮助我,那就太好了。谢谢你=) 问候,皮埃尔

【问题讨论】:

    标签: java android class datasnap


    【解决方案1】:

    通常在 Java 中,当您有一个具有某些属性的类时,有多种方法可以使它们易于访问。

    1. 公开属性
    2. 将属性设为私有并提供 get 和 set 方法。约定是使用 get 或 set,然后属性名称的第一个字母为大写。这些方法必须是公开的

    通常解决方案 n.2 是最好的解决方案,因为您避免直接访问其他类的私有属性(请参阅封装)。

    通常,但不是您的情况,当您像您一样声明属性时,您将它们的访问设置为“默认”,因此您可以从在同一包中扩展 NetworkManager 的另一个类访问它们。

    如果这个类只是一个配置参数持有者,你甚至可以将这个属性设为静态和公共的,这样你就不必实例化该类来访问它们。

    【讨论】:

    • 我应该使用我的大脑,像在 C++ 中那样做。谢谢建议^^
    【解决方案2】:

    在您的 NetworkManager 类中添加一个返回对象的公共方法 - 例如 public TServerMethods1 getProxy(){ return proxy; }

    【讨论】:

    • 天哪,我太笨了,只放 getter/setter >
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2012-06-14
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2016-08-11
    • 2020-07-26
    相关资源
    最近更新 更多