2013-02-11 43 views
2

我一直在Android上工作几个月,在我的业余时间,所以可能我会问愚蠢的问题。如何通过类之间的意见

在一个类中,我创建了一个对象,例如一个按钮,并且我想从其他类中“触及”它。

我当然能做到这一点是这样的:

public class CreateButton{ 

     public void createButton(){ 

     Button myButton = new Button(context);   

     //I can "pass" my object to another class this way 
     ManageButton manageButton = new ManageButton(myButton); 

     // or this way 
     manageButton.writeButtonTextMethod(myButton); 

    } 
} 

或这样

public class CreateButton{ 

     public Button createButton(){ 

     Button myButton = new Button(context); 
     return myButton; 

     } 

} 


public class ManageButton{ 

     public void writeButtonTextMethod(){ 

     CreateButton createButton = new CreateButton()  
     Button myButton = createButton.createButton(); 
     myButton.setText("W"); 

     } 
} 

我不知道是否有一种方法来“覆盖”为myButton,在createButton.class创建直接从ManageButton.class(和其他类)。

用上述代码,我要“呼叫” createButton.classManageButton.class或反之亦然被允许管理myButton的。

我可以做到myButton 静态,但它不正确使静态视图。

例如,我可以很容易地到达在类中创建的变量,该类延伸了应用程序。有什么类似的意见?

+4

为什么要在活动中共享'视图'? – poitroae 2013-02-11 13:10:00

+2

10000千分的问题**为什么要分享查看**? – 2013-02-11 13:11:09

+0

没有对不起,不是在活动之间,而是在课间。 在我的一个类中,我创建了一个按钮数组,并且我希望从其他类到达此数组,而无需每次都在类构造函数中传递数组。 – MDP 2013-02-11 13:21:18

回答

2

多人/引导/文章通过申请的权利要求是活动之间可能的和正确的共享对象(领域),这样一来:

这样的人都是白痴,因为myButton将引入内存泄漏除非这样做非常仔细。

所以,我仍然不知道我应该如何在不同的活动之间共享对象(TextView,Button,ImgaeView等)。

您不在活动之间共享小部件。最多可以在活动之间共享模型数据(或者更好的是指向集中存储的模型数据)。

在Web应用程序中,您不会在网页之间共享DOM节点,因为这是不可能的。您最多可以共享作为GET参数等在Web页面之间传递的数据,或者将数据存储在本地中央存储(Cookie,本地存储,IndexedDB等)中。 Android的活动就像网页 - 它们是松散耦合的。

如果你有你的UI的作品是如此紧耦合的,他们绝对需要共享窗口小部件,它们不应该单独活动。

+0

没有抱歉,不是活动之间,而是课间。 在我的一个类中,我创建了一个按钮数组,并且我希望从其他类到达此数组,而无需每次都在类构造函数中传递数组。 – MDP 2013-02-11 13:25:38

+0

@MatteoDepasquali:这是基本的Java编程。在“其他班级”上使用setter。或者,在构造函数中传递“Activity”,并在“Activity”中使用getters来获取数据。 – CommonsWare 2013-02-11 17:07:28

0

意见并不意味着在活动中共享。即使你忽视这一点并分享它们,你很可能会遇到WindowManager$BadTokenException,这意味着你不能在其父Activity之外改变Views。

但是,要以更普通的方式回答您关于共享非视图对象的问题,应用程序类是正确的选择。但是,使对象静态不是正确的方法。相反,使他们的实例变量,并通过访问它们在你的各种活动:

Application application: 

//Below line is in onCreate() 
application = this.getApplication(); 

之后,使用简单的访问它

application.myObject; //Or you could use getters and setters. Your choice. 
+0

没有对不起,不是在活动之间,而是在课间。 在我的一个类中,我创建了一个按钮数组,并且我希望从其他类到达此数组,而无需每次都在类构造函数中传递数组。 – MDP 2013-02-11 13:26:15

+0

再次,你为什么通过意见?视图应该只能从其活动访问** **。 – 2013-02-11 13:28:34

0

不明白为什么会ü大家分享一个按钮两项活动之间? 它是ActivityA或ActivityB中的任一按钮?没有必要,也没有必要去做。你不应该这样做。

编辑:这是更Java基础专题那么Android的。而从我的理解,U称之为“类”的东西,恕我直言,是方法(因为你无法调用类,因为你是怎么描述)。

最好的意见,我可以在这里给U:

  1. 学习Java基础知识(方法,类,对象,构造器,继承..)
  2. 研究Android基本信息(简单例如1活动直到你明白它好),
  3. 使MyButton类将扩展标准按钮
  4. 创建按钮(S)和更改其属性

这几个任务会,就是让繁忙的一段时间。放轻松,因为稍后使用复杂的应用程序会更容易。希望我帮了你。干杯

编辑2:在你写的最后一个例子中(在对这个答案的评论中),没有任何意义,因为我们在你之前写的你不要在两个活动之间分享按钮。暂停! 再次阅读:你不应该分享两个Activies之间的按钮。你问的问题不清楚,因为对于A和Z你不能说他们之间只有班级和“分享”按钮。哪一堂课?没有写的代码行,所以它真的很难找出你想要什么..:s

最后编辑:男人..请理解,你缺少Java的基础知识。这里没有坏的意图,只是试着引导你,告诉你你应该学什么。为什么?因为当我们用一个名字完全相同的方法来解释你的意思时,你并不会感到惊讶。它们只是对象“在做某事”,你想通过在构造函数中添加变量来“管理”它们不存在等。学习,下次立即写代码,为我们所有人节省时间。欢呼和享受学习

+0

没有抱歉,不是在活动之间,而是在课间。 在我的一个类中,我创建了一个按钮数组,并且我希望从其他类到达此数组,而无需每次都在类构造函数中传递数组。 – MDP 2013-02-11 13:25:03

+0

现在我们来到Java基础知识的领域..而且像按钮这样的小部件应该只与它们存在的活动或片段有关。无论如何要更好地理解所有的东西,也许你想编辑你的问题并描述详细的用例你有“麻烦”,并给我们一段代码你已经用来完成descibed情况 – Ewoks 2013-02-11 13:39:46

+0

,我编辑了我的答案..慢慢地,并且事情会妥善解决.. – Ewoks 2013-02-11 15:14:27