java - Android:如何从片段中以编程方式单击先前位于活动堆栈中活动中的按钮?
问题描述
当我在 fragmentB 中时,如何模拟单击位于堆栈中的活动中的按钮。
登录活动A => 片段B。
我想模拟这样的事情:
来自 fragmentB 的 LoginActivityA.btnClick()
我尝试使用这张票但没有成功: Ticket1,Ticket2,Ticket3
这是我的代码:
FragmentB:
//BEGIN TEST
String message="hello ";
Intent intent = new Intent(getActivity(), LoginActivity.class);
intent.putExtra("MESSAGE",message);
getActivity().setResult(2,intent);
getActivity().startActivityForResult(intent,2);
getActivity().finish();//finishing activity
//END TEST
登录活动A:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 2
if(requestCode==2)
{
//do the things u wanted
}
}
我确切地说我尽量不启动多个 LoginActivity 和 Fragment。我只想用 LoginActivity => Fragment 获得一个堆栈
有任何想法吗?
编辑:
我从这个 tichet尝试了这个但没有成功:
((LoginActivity)getActivity()).login();
我从呈现的片段中启动了活动功能,但出现错误
“找不到可接受的模块。本地版本为 0,远程版本为 0。”
解决方案
这不是一个好的做法,但如果您愿意,您可以通过以下方式调用您的活动 UI 元素
((Button) getActivity().findViewById(R.id.button_id)).performClick();
永远记住,Android 是一个很好的架构平台,如果你想做一些困难的事情,你可能不应该这样做。重新考虑你的设计模式。
推荐阅读
- c# - DocumentEditor InsertBefore 似乎无法在文档中找到节点
- python - 如何在由类对象组成的列表中查找特定值的最大元素索引?
- java - 了解 Jtransform 和 ColumbiaFFT 的 FFT 输出
- css - 如何将我的网站徽标移到容器外部的左侧
- ssl - Kubernetes 入口:SSL(HTTP -> HTTPS)重定向不起作用(Nginx Docker)
- go - 如何使用 Go 模块通过提交哈希或分支来拉取依赖项?
- networking - Kerberos 版本 4 中是否有重播缓存?
- docker - Docker 每个网络端口映射
- javascript - XMLHttpRequest.upload.onprogress 不使用 HTTPS
- java - 如何在 JBoss 上部署 Java 独立应用程序以及其他 Web 应用程序