我比Android更熟悉iOS开发,我想知道是否所有代码都应该写在Activity中而不是具有“模型”类。
我有几个屏幕,每个屏幕都带有几个复选框,我希望它们在点击时表现相同,我试图弄清楚如何在不在每个活动中编写重复代码的情况下执行此操作。谢谢!
答案 0 :(得分:1)
不,你不应该。如果您熟悉java,请将活动视为添加OO的main扩展。
在您的特定示例中,您可以使用以下方法创建类:
MyLibrary
。然后将其添加到XML <MethodName>(View <checkboxClickedName>){ //your code here }
中的复选框,您可能需要完整的包路径(例如com.example.app。)
注意:如果您需要的某些命令/对象仅在活动中可用,则应使用android:onClick="<MethodName>"
或最好在正在运行的活动中创建此命令。
答案 1 :(得分:1)
您可以拥有一个扩展活动的基类,该活动包含您希望在单击时执行的方法(实现或抽象)。在进行新活动时,请使用此新基类而不是活动。在布局xml中,您可以将每个复选框的onclick设置为要执行的基本活动中的方法。
答案 2 :(得分:1)
最佳做法是使用单个活动并切换片段,就像它们是您的屏幕一样。然后,活动可以简单地实现片段将重用的侦听器接口。
由于你有多项活动,这会变得有点困难。要真的重用一个监听器,我可以想到一个(不那么漂亮)选项。创建一个静态侦听器并延迟加载它:
public class MainActivity extends Activity {
private static View.OnClickListener sCheckboxClickListener;
public static View.OnClickListener getCheckboxClickListener() {
if (sCheckboxClickListener == null) {
sCheckboxClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// Work with v
}
};
}
return sCheckboxClickListener;
}
}
并在每个活动中致电:
findViewById(R.id.checkbox1)
.setOnClickListener(MainActivity.getCheckboxClickListener());