android - 只写一次方法,在应用程序的任何地方都可以在 "android:onClick"访问它

标签 android onclick android-xml

我的应用程序中有一个标题栏。标题栏只有一个按钮。单击该按钮后,我会显示信息 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/

相关文章:

java - 如何隐藏 View 后面的 View

android - 在应用 XML 属性之前恢复 View 状态

c# - 尝试显示广告时出错 - Android C# Xamarin

javascript - location.reload(), Javascript, HTML

javascript - 带有图像按钮的Onclick提交表单Javascript

Android:如何在手机键盘弹出或下降时动态更改ListView的高度?

android - 如何在打盹模式下移动设备(Android Preview M/Marshmallow)?

java - 使用 Beacons-Android 库时 Eddystone 信标不工作

android - 通过 ssl 的 java 沙丁鱼

Android 动态创建按钮 : setOnClickListener doesn't work