从android中的java类调用片段方法

时间:2014-05-29 06:05:50

标签: android

在我的java类中,我有一个Fragment的上下文,现在我想在Fragment调用一个函数怎么可能?

public JsonParsing(Context context,String data)
{
    this.context=context;// fragment context
    this.data=data;
}

现在我想以Fragment名称setStatus()

调用方法

1 个答案:

答案 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}}方法的视图,就会没有问题。