доступ к переменным активности во фрагменте

<p>если у меня есть действие a, которое расширяет базовую активность ba, то я могу безопасно получить доступ к любой переменной в активности ba из действия a. теперь то, что я использую, содержит действие a, которое включает в себя фрагмент f . теперь из этого фрагмента. я хочу получить доступ ко всем переменным a таким же образом, как я делал выше, и если нет, то есть ли безопасный способ сделать это, кроме как сделать его доступным через публичные методы.</p><p>или есть способ, которым я могу скопировать переменные в базовом действии в базовый фрагмент, чтобы он был доступен во всех действиях и фрагментах.</p>

<p>хороший способ его реализации - использовать интерфейс, как предполагает официальная документация.</p><blockquote> <p>чтобы позволить фрагменту взаимодействовать до его активности, вы можете определить интерфейс в классе fragment и реализовать его в деятельность.</p> </blockquote><p>итак, в основном внутри вашего фрагмента вы определяете интерфейс следующим образом:</p><pre><code>public interface mylistener { public void onaction(); } </code></pre><p>и определить (все еще во фрагменте) поле типа <code>mylistener</code></p><pre><code>mylistener mcallback; </code></pre><p>затем вы можете установить этот слушатель, используя метод <code>onattach(activity)</code>:</p><pre><code>mcallback = (mylistener) activity; </code></pre><p>теперь каждый раз, когда вы хотите вызвать из своего фрагмента метод в упражнении, вы можете использовать обратный вызов:</p><pre><code>mcallback.onaction(); </code></pre><p>конечно, ваша активность должна реализовывать интерфейс, иначе вы получите исключение при преобразовании вашей активности в mylistener.</p><p>итак, просто сделайте:</p><pre><code>public class myactivity extends activity implements myfragment.mylistener { @override public void onaction() { // some stuff } } </code></pre><p>для более подробной информации взгляните на <a href="https://developer.android.com/training/basics/fragments/communicating.html#implement">документацию</a> о связи между фрагментами</p>

<p>если <code>variable\_name</code> является переменной в вашей активности <code>activity\_name</code>, и к ней можно получить доступ извне activity <code>activity\_name</code></p><p>затем используйте этот код:</p><pre><code>((activity\_name)this.getactivity()).variable\_name //this refers to your fragment </code></pre>