android - 如何在Android中使用界面

标签 android kotlin

我知道“接口(interface)”的概念,但我很难理解如何在 android 开发中使用它们。
假设我创建了一个界面来决定是否显示进度条 -

interface ProgressBarInterface {
    fun showProgressBar()
    fun hideProgressBar()
}
我在单个 Activity 应用程序中的 BaseActivity/MainActivity 中实现了这个:
class BaseActivity : AppCompatActivity() , ProgressBarInterface {
    private val TAG = "MainActivity"


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    override fun showProgressBar() {

    }

    override fun hideProgressBar() {

    }
}
在我的其他 Activity 中,我有一个按钮,当我点击它时,我想触发 showProgressBar在基础 Activity 中:
  button.setOnClickListener { 
            //Show progress bar
        }
如何与界面交互以触发基本 Activity 中的功能?

最佳答案

由于您已经在 BaseActivity 中实现了接口(interface),因此您可以在接口(interface)方法中添加您需要做的事情,然后在您的 Activity 中的任何位置调用它们,如果您正在寻找将此 BaseActiviy 扩展为你需要更多的 Activity 来使这个 BaseActivity 抽象然后你可以在每个 Activity 中扩展这个 BaseClass 并只使用接口(interface)方法

abstract class BaseActivity : AppCompatActivity() , ProgressBarInterface {
    private val TAG = "MainActivity"


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    override fun showProgressBar() {
       progressBar.visibility = View.VISIBLE
    }

    override fun hideProgressBar() {
       progressBar.visibility = View.GONE
    }
}
然后在您的 Activity 中,您可以从 BaseActivity() 扩展并使用您在该 BaseActivity() 中定义的接口(interface)方法来防止再次对其进行编码,您可以这样做
class FirstActivity : BaseActivity() {
 
...

button.setOnClickListener {
  showProgressBar()
}
显示和隐藏 View 的更简单方法?使用扩展功能
fun View.show() {
    this.visibility = View.VISIBLE
}

fun View.hide() {
    this.visibility = View.GONE
}
您可以在任何类中定义该扩展,例如 ViewUtils.kt然后打电话
 button.setOnClickListener {
      progressBar.show()
    }
或者
button.setOnClickListener {
          progressBar.hide()
        }

关于android - 如何在Android中使用界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62677655/

相关文章:

java - 当映射包含 DTO 列表的对象成功时,为什么映射 DTO 列表会失败?

固定 channel 上的 Android RFCOMM 套接字

android - CMake 在 Android Studio SDK 工具中不可用

Android 从 URL 下载 PDF,然后使用 PDF 阅读器打开它

android - 无法使用空指针异常错误的 Butterknife

android - Moshi generateAdapter 不适用于 JSON 对象列表

具有 2 种 View 类型的 kotlin recyclerview

java - 为什么 Kotlin 进行空检查,当反编译为 Java 时会声明一些未使用的变量?

android - Google Drive 从文件夹中获取文件

android - 在房间数据库中调用 'insert' 未完成事务