如何从另一个 activity(B) 调用一个方法(在 activity(A) 中)来处理那个 activity(A)?

how to call a method(in activity(A)) from another activity(B) to work on that activity(A)?

我有 2 个 activity。一个是 main activity("A"),另一个是 Dialog("B"),它 ("B") 也是一个 activity。当我在对话框(“B”)上单击“确定”时,它(“B”)将关闭并且 将在 activity“A”该方法将适用于 activity("A")。我如何从 activity("B") 调用方法来处理 activity("A)??我正在学习 android studio 并且了解不多。

这里可以使用命令模式。您可以在 ActivityB

中创建一个界面

例如:

    public interface OnYourButtonClickListener
    {
        void performActionOnClick(Params...);
    }

现在,让你的 ActivityA 实现上面的接口,并覆盖你的 ActivityA 接口中的方法,即覆盖 performActionOnClick.

现在,请确保在 ActivityB 中接收调用 activity 的上下文(您已实现接口)并将其转换为您的接口类型,以便您可以调用操作您想执行的操作。

要阅读有关此模式的更多信息:https://en.wikipedia.org/wiki/Command_pattern

您想从 Activity B 调用 Activity A 中的方法。首先,内部 activity 通信并不像您描述的那样可取。

但是,有一些方法可以实现您的要求。

  1. 开始Activity结果

如果 Activity B 使用 StartActityForResult 从 Activity A 启动,

 //Activity A

 val intent = Intent(this, ActivityB::class.java)
 startActivityForResult(intent, 1001) //Any request code

你可以在Activity结果回调activity A.

上得到结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data:Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == 1001 && resultCode == Activity.RESULT_OK)
        callYourMethod()
}
  1. 在意图中传递一个布尔值。 (这是一种破解)

当您在 Activity B 中的对话框中单击确定时,通过在意图中传递一个布尔值来调用 activity A。

 val intent = (this, ActivityA::class.java)
 val bundle = Bundle()
 bundle.putBoolean("KEY", true)
 startActivity(intent, bundle)

然后在ActivityA的onCreate方法中,从intent中获取bundle,如果为真,则调用该方法。

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val isTrue = intent.getBooleanExtra("KEY", false) //false is default value
        if(isTrue) 
          callYourMethod()
    }

还有另一种在 类 之间通信的方法,例如使用 Interface 从适配器到 Activity、片段到 activity 等等。但是,我希望上述步骤暂时能对您有所帮助。