如何在一个fragment or 任意类中操作另一个fragment中的方法

 我来答
地瓜说机
2017-10-17 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2.3万
采纳率:91%
帮助的人:1.2亿
展开全部
1 如何在acitivty中执行fragment中的方法:

首先获得这个Fragment的对象
xxxFragment fragmentObject = (xxxFragment) getFragmentManager.findFragmentByTag("xx");

2 如何在Fragment中执行activity中的方法:

第一种:让acitivity继承接口

第二种:在fragment中使用getActivity()但是要加上acitivity的名字,即:

((MainActivity)getActivity()).xxx();

3 如果在fragment中要操作一个fragment,首要要得到这个对象,如何得到?使用getActivity中的FragmentMnager的getFragmentByTag,然后就可以使用这个fragment的对象来操作他的方法了。

当然获得这个Fragment的时候要转成这个Fragment的一个对象eg:
FragmentManager fm = getActivity.getSupportFragmentManager();
xxxFragment = (xxxFragment)fm.findFragmentByTag("xxx")

4 如何在任意类中操作一个fragment,首先要得到环境参数,如何得到?

在activity中:

private static WeakReference<ActionButtonActivity> actionButtonActivty = null;

actionButtonActivty = new WeakReference<ActionButtonActivity>(this);
从activity中将这个actionButtonActivity对象传递到这个任意类中

asyncTask.setActivity(actionButtonActivty);

在任意类中:

private static WeakReference<ActionButtonActivity> actionButtonActivty;
public void setActivity(
WeakReference<ActionButtonActivity> actionButtonActivty) {
this.actionButtonActivty = actionButtonActivty;
}

/**
* this method is invoked on the UI thread after the background computation
* finishes. The result of the background computation is passed to this step
* as a parameter.
*/
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);

FragmentManager fm = actionButtonActivty.get().getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
BFragmentTab_one_event_details bt_det = (BFragmentTab_one_event_details) fm
.findFragmentByTag("2_det");
bt_det.setEvidenceImage(result);
bt_det.setButtonClickable();
ft.addToBackStack(null).commit();

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式