我正在开发一个从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;
}
}
希望有人能帮助我解决这个问题。提前致谢。如果要发布代码的任何其他部分,也请告诉我
答案 0 :(得分:3)
您可以使用片段的getActivity()
方法来获取上下文。
所以,
public GraphicalView getView(Context context)
{
chartview = ChartFactory.getScatterChartView(context,dataset,mRenderer);
return chartview;
}
这适用于调用视图 - getView(getActivity().getApplicationContext())
。
注意:
在你调用它时要小心,因为如果片段已被分离,getActivity()
将返回null。