android—对于一些在许多活动中重复的java代码,应该使用什么方法
我有一个应用程序,它有一个顶部菜单,如下图所示。这几乎经常用于所有活动中。对于布局,我在一个xml文件中定义了它,并使用android—对于一些在许多活动中重复的java代码,应该使用什么方法,java,android,Java,Android,我有一个应用程序,它有一个顶部菜单,如下图所示。这几乎经常用于所有活动中。对于布局,我在一个xml文件中定义了它,并使用将其包含在每个布局文件中。我想知道java编码中是否有方法避免声明所有的ImageButton,然后在每个活动中为它们使用findViewById和onclick事件。前四个图标将用作菜单,在所有布局和活动中可用仅在第一个活动中写入。将其扩展到其他活动,而不是使用android.app.Activity进行扩展 例如: 只在第一个活动中写。将其扩展到其他活动,而不是使用andr
将其包含在每个布局文件中。我想知道java编码中是否有方法避免声明所有的ImageButton,然后在每个活动中为它们使用findViewById
和onclick
事件。前四个图标将用作菜单,在所有布局和活动中可用仅在第一个活动中写入。将其扩展到其他活动,而不是使用android.app.Activity
进行扩展
例如:
只在第一个活动中写。将其扩展到其他活动,而不是使用
android.app.Activity
进行扩展
例如:
将该方法放在扩展应用程序的MyApplication类中。所以,它可以被多个活动访问。将该方法放在MyApplication类中,该类扩展了应用程序。因此,它可以被多个活动访问。首先,您试图实现的是违反android标准的,这可能会影响android用户的用户体验。而是在操作栏上添加菜单项
无论如何,您可以通过定义一个基类(将其命名为ActivityBase)并在其上执行所有初始化和侦听器注册来实现所需的功能。然后,从该基类扩展。请记住,每个活动都有其自己的基类视图实例,并且每个活动的状态都不同。首先,您试图实现的是违反android标准的,这可能会影响android用户的用户体验。而是在操作栏上添加菜单项
无论如何,您可以通过定义一个基类(将其命名为ActivityBase)并在其上执行所有初始化和侦听器注册来实现所需的功能。然后,从该基类扩展。请记住,每个活动都有其自己的基类视图实例,并且每个活动的状态都不同。尽管您接受了答案,但我不同意应用程序类应用于承载全局方法。它可以用来维护全局状态,但那是另一回事 正如其他人所说,通过创建基本活动类来使用继承,然后将其扩展到所有其他活动。但是,为了简化操作,您可以使用(例如)…定义布局文件本身中每个按钮使用的onClick方法 只要基本活动定义了一个名为myOnClickMethod的公共方法(或您选择的任何方法名称),该方法带有一个空返回,并且接受一个视图参数,它就可以工作,而无需实现View.OnClickListener,也无需在Java代码中设置侦听器。范例
public class MyBaseActivity extends Activity {
public void myOnClickMethod(View v) {
// Get the resource id of v and use switch / case to perform action needed
}
}
这就是您所需要的。尽管您已经接受了答案,但我不同意应用程序类应用于承载全局方法。它可以用来维护全局状态,但那是另一回事 正如其他人所说,通过创建基本活动类来使用继承,然后将其扩展到所有其他活动。但是,为了简化操作,您可以使用(例如)…定义布局文件本身中每个按钮使用的onClick方法 只要基本活动定义了一个名为myOnClickMethod的公共方法(或您选择的任何方法名称),该方法带有一个空返回,并且接受一个视图参数,它就可以工作,而无需实现View.OnClickListener,也无需在Java代码中设置侦听器。范例
public class MyBaseActivity extends Activity {
public void myOnClickMethod(View v) {
// Get the resource id of v and use switch / case to perform action needed
}
}
这就是您所需要的。使用继承。用通用代码定义一个基类并使您的所有活动扩展该类如何?您可以使用选项卡栏…使用继承。用通用代码定义一个基类并使您的所有活动扩展该类如何?您可以使用选项卡栏。。。
public class MyBaseActivity extends Activity {
public void myOnClickMethod(View v) {
// Get the resource id of v and use switch / case to perform action needed
}
}