获取片段的上下文

时间:2014-06-24 13:15:11

标签: android achartengine

我正在开发一个从txt文件中读取光谱数据的应用程序,并使用Achartengine绘制点。我正在使用一个片段并尝试将ScatterGraphPlot .java类的getView(Context context)方法返回的GraphicalView添加到片段的Linear Layout中。实际上我无法弄清楚要将哪个上下文传递给getView(Context context)方法来获取GraphicalView。 这段代码来自mainactivity.java文件,用于读取文件和添加视图

loadspec = (Button) findViewById(R.id.loadspec);
        loadspec.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                filepath = filename.getText().toString();
                filepath = "/sdcard/" + filepath + ".txt";

                try {
                    BufferedReader br = new BufferedReader(new FileReader(filepath));
                    String specData = "";
                    int channelVal = 1;
                    while ((specData = br.readLine()) != null) {

                                                       scatter.StringProc(specData, channelVal);
                        specData = "";
                        channelVal++;

                    }

                    br.close();
                    scatter.addPointsTochart(channelVal);

                    FragmentManager FM = getFragmentManager();
                    FragmentTransaction FT = FM.beginTransaction();
                    ChartFragment CF = new ChartFragment();
                    FT.add(R.id.chart_fr, CF);
                    FT.addToBackStack("CF");
                    FT.commit();
                    //code for adding GraphicalView in the Fragment
                                //by calling the getView(Context context) method.



                }

如您所见,有一个loadspec按钮可在读取.txt文件后绘制光谱图 Scatter.addPoints(int)将为系列添加点 添加点后,Fragment事务完成,现在我无法确定将哪个Context传递给getView(Context context) 这是getView(Context context)方法。

public GraphicalView getView(Context context)
    {
        chartview = ChartFactory.getScatterChartView(context,dataset,mRenderer);
        return chartview;
    }

这是ChartFragment类扩展片段类

package com.example.spectrumreaderfragments;

import org.achartengine.GraphicalView;

import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

    public class ChartFragment extends Fragment {

        @Override
        public View onCreateView(LayoutInflater inflator,ViewGroup container, Bundle savedInstanceState)
        {

            View v = inflator.inflate(R.id.chart_fr,container,false);
            return v;

        }


    }

希望有人能帮助我解决这个问题。提前致谢。如果要发布代码的任何其他部分,也请告诉我

1 个答案:

答案 0 :(得分:3)

您可以使用片段的getActivity()方法来获取上下文。

所以,

public GraphicalView getView(Context context)
    {
        chartview = ChartFactory.getScatterChartView(context,dataset,mRenderer);
        return chartview;
    }

这适用于调用视图 - getView(getActivity().getApplicationContext())

注意:

在你调用它时要小心,因为如果片段已被分离,getActivity()将返回null。