Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:访问活动外部的视图对象_Android_Oop_Coding Style_Dry_Findviewbyid - Fatal编程技术网

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

Android:访问活动外部的视图对象,android,oop,coding-style,dry,findviewbyid,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

如果我的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的方法在许多活动中被重用。如果此方法不正确,应将可重复代码存储在何处

我建议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
}
将对象用作嵌套的内部类

 Activity
   class MyObject {
每个都有其优点或缺点,我个人会坚持按参数传递视图,它是最松散耦合的,在我看来是最简单和最不容易出错的