3

フラグメントでビューを作成しました

public static class GraphSectionFragment extends Fragment 
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
    {
        GraphView view = new GraphView(getActivity());
        view.setGraphType(GraphView.GraphType.Oscillator);          
        return view;
    }
}

ここで、メイン アクティビティから GraphView オブジェクトにアクセスする必要があります。どうすればいいですか?この方法で試してみましたが、うまくいきません。

GraphSectionFragment fr = (GraphSectionFragment) m_SectionsPagerAdapter.getItem(0);
View v = fr.getView();
GraphView graph = (GraphView)v;
graph.setData(0, m_DeviceThread.getRangeDataI());

m_SectionsPagerAdapter は、FragmentPagerAdapter から継承されたクラスのオブジェクトです。Fragment.getView は、GraphView ではなく、奇妙なクラスのビューを返します。

4

2 に答える 2

3

このリンクで答えが得られます。実装に応じて、どちらの方法でもアクティビティからフラグメントにアクセスできます。

FragmentActivity を拡張するクラスでフラグメント インスタンスを取得するには:

MyclassFragment instanceFragment= (MyclassFragment)getSupportFragmentManager().findFragmentById(R.id.idFragment);

また

Fragment を拡張するクラスでフラグメント インスタンスを取得するには、次のようにします。

MyclassFragment instanceFragment =
(MyclassFragment)getFragmentManager().findFragmentById(R.id.idFragment);
于 2012-12-06T04:21:05.220 に答える
-1

次のようにして、アクティビティを取得できます。

(MyActivity)getActivity();

したがってGraphView、クラスのパブリック変数に設定されている場合は、次のことができます。

GraphView graph = ((MyActivity)getActivity()).myGraph;

またはアクセサ関数を設定します。

GraphView graph = ((MyActivity)getActivity()).getGraphView();
于 2012-08-10T16:50:50.870 に答える