Android: как программно нажать кнопку, ранее расположенную в действии в стеке действий, из фрагмента?

Когда я нахожусь во фрагменте B, как имитировать нажатие кнопки, расположенной в действии в стеке.

ЛогинАктивитиА => фрагментБ.

Я хочу смоделировать что-то вроде этого:

LoginActivityA.btnClick() из фрагментаB

Я безуспешно пытался использовать эти билеты: 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

ЛогинАктивитиА:

@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

Любые идеи?

ИЗМЕНИТЬ:

Я пробовал это из этот тикет безуспешно:

((LoginActivity)getActivity()).login();

Я запустил функцию активности из представленного фрагмента с ошибкой

«Подходящий модуль не найден. Локальная версия — 0, а удаленная версия — 0».


person ΩlostA    schedule 06.03.2020    source источник


Ответы (2)


Вы можете использовать интерфейс с методом onClick, который реализуется вашей активностью, а затем во фрагменте B вызывать метод onClick всякий раз, когда вы хотите, и передавать ему активность.

Хотя я предполагаю, что то, что вы делаете, неправильно, и вы должны изменить свое мнение об этом.

person Elmira Frhn    schedule 06.03.2020
comment
Привет! Я могу это сделать, но как вызвать функцию в действии A из стека? - person ΩlostA; 06.03.2020
comment
@ ΩlostA не является LoginActivityA, хостом FragmentB? - person Elmira Frhn; 06.03.2020
comment
Да, это. Первым запущенным представлением является loginActivityA, а затем FragmentB. - person ΩlostA; 06.03.2020
comment
В порядке. Таким образом, вы можете получить ActivityA во Фрагменте: fragmentB.getActivity() - person Elmira Frhn; 06.03.2020
comment
Я получаю Не найден приемлемый модуль. Локальная версия равна 0, а удаленная версия равна 0. путем выполнения activityA activity = (activityA) fragmentB.this.getActivity(); - person ΩlostA; 06.03.2020

Это не очень хорошая практика, но если вы хотите, вы можете вызывать элементы пользовательского интерфейса активности с помощью

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

Всегда помните, что Android — это хорошая платформа для архитекторов, и если вы пытаетесь сделать что-то сложное, возможно, вам не следует этого делать. Переосмыслите свои шаблоны проектирования.

person Samuel Robert    schedule 06.03.2020