在 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 的视图的主要内容,如果未能解决你的问题,请参考以下文章