Ссылочный фрагмент / AppCompatActivity из FragmentActivity - PullRequest
0 голосов
/ 01 февраля 2019

Вопрос В FragmentActivity как я могу получить доступ к ссылке на Fragment или AppCompatActivity?

Сценарий В моем приложении есть вкладки, позволяющие переключаться между фрагментами,Каждая вкладка имеет кнопку, которая переходит в представление, доступ к которому осуществляется только с этой вкладки (после щелчка).

public class MainActivity extends AppCompatActivity{
 private class (on)SectionPageAdapter extends FragmentPageAdataper{
  ...
  @Override public Fragment getItem(int position){
    ...
    F1 f1 = new F1();
    return f1;  
   }
 }
}

public class F1 extends Fragment{
...
 void onIntent(){
  ...
  Intent intent = new Intent(this.getActivity(), AccountTransition.class);
  this.startActivity(intent);
 }
}


public class F2 extends FragmentActivity{
 //how can i gain access to a reference from F1 class or MainActivity class?
}

enter image description here

1 Ответ

0 голосов
/ 01 февраля 2019

Вы не должны пытаться получить ссылку на Activity, это может вызвать утечку памяти и сделать код более хрупким.

Вам следует изучить способы связи между Activities, такие как использованиеBroadcastReceiver или EventBus.

https://developer.android.com/reference/android/content/BroadcastReceiver

Если вы хотите что-то немного проще, я бы порекомендовал EventBus.https://github.com/greenrobot/EventBus

Вот краткий пример того, как вы можете отправлять данные между двумя Activities без каких-либо ссылок, используя EventBus.

MainActivity.java

public class MainActivity extends AppCompatActivity{

    @Subscribe()
    public void onMessageEvent(MessageEvent event) {
        // Show the message.
    }
}

F2.java

public class F2 extends FragmentActivity{

    // Sending "Hello from F2" to anyone listening.
    public void sendMessage() {
        MessageEvent event = new MessageEvent("Hello from F2");
        EventBus.getDefault().post(event);
    }
}
...