首页 > 解决方案 > Android:如何从片段中以编程方式单击先前位于活动堆栈中活动中的按钮?

问题描述

当我在 fragmentB 中时,如何模拟单击位于堆栈中的活动中的按钮。

登录活动A => 片段B。

我想模拟这样的事情:

来自 fragmentB 的 LoginActivityA.btnClick()

我尝试使用这张票但没有成功: Ticket1Ticket2Ticket3
这是我的代码:
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。”

标签: javaandroidandroid-fragmentsandroid-activityonactivityresult

解决方案


这不是一个好的做法,但如果您愿意,您可以通过以下方式调用您的活动 UI 元素

((Button) getActivity().findViewById(R.id.button_id)).performClick();

永远记住,Android 是一个很好的架构平台,如果你想做一些困难的事情,你可能不应该这样做。重新考虑你的设计模式。


推荐阅读