在我的java类中,我有一个Fragment
的上下文,现在我想在Fragment
调用一个函数怎么可能?
public JsonParsing(Context context,String data)
{
this.context=context;// fragment context
this.data=data;
}
现在我想以Fragment
名称setStatus()
答案 0 :(得分:0)
要访问片段的非静态方法,一种解决方案可能是定义一个static
字段,该字段包含对您正在使用的当前片段的引用:
public class MyActivity extends Activity {
public static MyFragment currentFragment;
public static class MyFragment extends Fragment {
public void setStatus() {
// TODO set the status
}
}
public void callerMethod() {
currentFragment.setStatus();
}
}
通过这种方式,您可以从任何有权访问MyFragment
类的java类访问MyActivity
实例的方法,您可以将currentFragment
字段定义为私有,因此只有MyActivity
字段1}}类或它的任何实例都可以到达你的片段实例。
此外,您可以直接从其父级findViewById()
(包含它的那个)调用Activity
来访问片段内的视图。像这样:
public class MyActivity extends Activity {
public static class MyFragment extends Fragment {
public View onCreate(...) {
// Inflate a layout that contains a view
// with the id "view_id".
}
}
public void callerMethod() {
// Here we access the view that was inside the
// fragment's layout.
View view = findViewById(R.id.view_id);
}
}
只要片段在Activity
内部充气findViewById
并{{1}}查找{{1}}方法的视图,就会没有问题。