如何从另一个 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 通信并不像您描述的那样可取。
但是,有一些方法可以实现您的要求。
- 开始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()
}
- 在意图中传递一个布尔值。 (这是一种破解)
当您在 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 等等。但是,我希望上述步骤暂时能对您有所帮助。
我有 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 通信并不像您描述的那样可取。
但是,有一些方法可以实现您的要求。
- 开始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()
}
- 在意图中传递一个布尔值。 (这是一种破解)
当您在 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 等等。但是,我希望上述步骤暂时能对您有所帮助。