Android:访问活动之外的视图对象

时间:2013-06-02 17:07:47

标签: android oop coding-style dry findviewbyid

如果我的OOP申请不正确,请纠正我。我在/src/myworkspace/MyObject.java有一个自定义的Android类,它不会扩展任何内容。

public class MyObject {
  ...

  public void methodOne() {
    ...
  }
}

在主要活动中,调用MyObject.methodOne() 我如何操作methodOne中的视图对象?
例如类似于

的东西
mButton = (Button) findViewById(R.id.button_one);
mButton.setOnClickListener(mButtonListener);

MyObject的方法在许多活动中被重用。如果这种方法不正确,那么应该在哪里存储可重复的代码?

1 个答案:

答案 0 :(得分:1)

我建议MyObject接收一个视图作为参数:

public class MyObject {
...
  public void methodOne(Button button) {
   ...
  }
}

只需从您的活动中调用它:

... activity code ....
MyObject obj = new MyObject();
Button button = (Button) findViewById(R.id.button_one);
obj.methodOne(button);
.... more activity code.

您也可以使用其他方法:

将MyObject绑定到构造函数中的活动:

MyObject(Activity owner) {
   .. assign activity to member
}

使用Object作为嵌套的内部类。

 Activity
   class MyObject {

每个人都有它的优点或者得到的,我个人会坚持通过参数传递一个视图,它是最松散耦合的,而IMO最简单,最不容易出错。