我需要在android中定义多个活动的布局,并且从UI部分开始,它是成功的。但是要编写要在每个单击侦听器上执行的元素,我需要在我使用的所有java页面中定义它。
我们可以在java页面中全局定义它并将其包含在所需的页面中吗?
menuButton = findViewById(R.id.menuButton);
menuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), MenuActivity.class);
startActivity(i);
finish();
overridePendingTransition(0, 0);
}
});
答案 0 :(得分:1)
是和否。
您可以创建一个BaseActivity
,其中包含每次点击按钮时必须执行的通用逻辑。
但是你需要为特定活动的按钮实现监听器,因为每个活动的生命周期独立于其他活动。
为了使代码更易于阅读(避免implementing listener
/ setOnclickListener
),您可以使用ButterKinfe,并为OnClick()
注释创建方法,并调用该方法BaseActivity
。
答案 1 :(得分:-1)
您基本上想要做的是调用findViewById()
,只有在您引用Context
变量时才能调用Activity
。您应该使用Context
this
,因此您将Context
传递给静态函数,然后静态函数可以访问通过public class ExampleActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MenuUtils.setListener(this);
}
}
访问的所有方法。
public static class MenuUtils{
public static void setListener(Context context){
menuButton = context.findViewById(R.id.menuButton);
menuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do stuff
}
});
}
}
像这样定义静态类:
Activity
您应该注意的是,传递给此函数的任何menuButton
都应该在其布局中包含NullPointerException
,否则您将面临获得findViewById()
的风险,这是当menuButton
无法找到#
时。