在 Fragment Activity 中查找 Fragment 的视图

Posted

技术标签:

【中文标题】在 Fragment Activity 中查找 Fragment 的视图【英文标题】:Find a view of a Fragment in the Fragment Activity 【发布时间】:2014-12-23 15:53:04 【问题描述】:

我有一个 FragmentActivity,其中附加了一个 Fragment。现在,在 Fragment Activity 的 onBackPressed 的特定步骤中,我想更改在 Fragment 而不是在 Fragment Activity 中定义的 DRAWABLE OF A BUTTON。

我的问题是:如何在 Fragment Activity 的 onBackPressed 方法中更改该按钮的可绘制对象(在 Fragment 下定义)。

谢谢

【问题讨论】:

@Nachi 什么鬼??您是否仔细阅读了问题????我要问的是如何在 FragmentActivity 中找到 Fragment 的视图。这与被支持的人无关, 仔细看看这个答案:***.com/a/19133522/1025599。您需要在您的片段中定义一个可以从父活动调用的接口。在片段中,您可以获得对视图的引用并在那里更改可绘制对象。 @Gaurav 检查我的解释..希望它有所帮助 【参考方案1】:

当你点击返回时,你的附加活动的 onBackPress 方法将被调用。

现在,如果您想在 Fragment 类中操作某些内容,请创建一个接口。

按照这种方式:->

第 1 步:

   Activity onBackPress()
   myinterface.changebutton()
    

第二步:

 public Interface myinterface
 public void changeButton()
 

第 3 步:

  Fragment class implements myinterface

  onCreateView
  // Intialize the Button view here

  public void changeButton()

  mybutton.setBackgroundResource();
  

【讨论】:

【参考方案2】:

让我假设片段是 LoginFragment 有一个按钮(公共范围)loginButton。然后你可以在你的 onBackPressed 中做这样的事情:

LoginFragment fragment = new LoginFragment();// this is a class level variable 
// on in back pressed
fragment.loginButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher) );

或者,您可以在 LoginFragment 上使用一个方法来更改 backgroundDrawable:

public void changeBackGround()
    loginButton.setBackgroundDrawable(getActivity().getResources().getDrawable(R.drawable.ic_launcher)

// call it like this
fragment.changeBackGround();

【讨论】:

【参考方案3】:

我会这样做:

       ((Button)fragment.getView().findViewById(R.id.yourButtonId)).setBackground(getResources().getDrawable(R.drawable.your_drawable_id));

【讨论】:

以上是关于在 Fragment Activity 中查找 Fragment 的视图的主要内容,如果未能解决你的问题,请参考以下文章

Fragment与Activity交互

Activity与Fragment之间的通信

Android碎片Fragment总结

深入分析动态管理Fragment

关于Fragment.onCreate()中引用Activity.onCreate()创建的对象时的一个异常

关于Fragment.onCreate()中引用Activity.onCreate()创建的对象时的一个异常