我的应用程序中有一个标题栏。标题栏只有一个按钮。单击该按钮后,我会显示信息 Activity 。现在,据我所知,android:onClick
需要在 Activity 中引用一个公共(public)方法,该 Activity 在 setContentView()
中设置了 xml。现在,由于按钮点击的逻辑在整个应用程序中都是相同的,所以我想要的是,我将方法只说一次 showInfoScreen(View view)
并将其放入该按钮 onClick
属性。而且我不需要在所有地方都写相同的方法。可能吗?
最佳答案
当然可以。编写一个 Activity
类,然后让所有的 Activity
扩展它。例如:
public abstract class BaseActivity extends Activity {
@Override
public void setContentView( int layoutResID ) {
super.setContentView( layoutResID );
findViewById(R.id.button).setOnClickListener(new OnTitleBarButtonClickListener());
}
private void showInfoScreen() {
// Show the info screen
}
private class OnTitleBarButtonClickListener implements OnClickListener {
@Override
public void onClick(View v) {
showInfoScreen();
}
}
}
然后所有派生的 Activity
都会扩展 BaseActivity
而不是 Activity
。
这样做的美妙之处在于,任何扩展此类的 Activity
都会自动获得此功能。派生类中不需要编码,只需在 BaseActivity
中。所有 Activity
的唯一契约(Contract)将是拥有 R.id.button
或您在其内容中命名的任何 ID。
关于android - 只写一次方法,在应用程序的任何地方都可以在 "android:onClick"访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10069908/