如何为多个活动全局定义特定布局onclick函数

时间:2018-03-05 11:09:45

标签: java android android-activity

我需要在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);
    }
});

2 个答案:

答案 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无法找到#时。