静态方法如何从调用活动中获取上下文?

时间:2018-04-03 11:20:04

标签: java android-studio mpandroidchart

我正在使用MPAndroidChart lib来绘制图表,我在使用市场视图时遇到了一些问题,代码如下:

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    View p = findViewById(R.id.pie);
    ChartPie.Plot(p, p.getId());


    View l = findViewById(R.id.line);
    ChartLine.Plot(l, l.getId());

}

Chartline.java

protected Context context;


public static void Plot(View v, int id){

    LineChart lineChart = v.findViewById(id);

    HelloME mv = new HelloME(**context**, R.layout.mymarketview);
    mv.setChartView(lineChart);
    lineChart.setMarker(mv);

    XAxis xAxis = lineChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
                    ...

HelloME.java

    private TextView tvContent;

    public HelloME(Context context, int layoutResource) {
        super(context, layoutResource);

        tvContent = (TextView) findViewById(R.id.hello);
    }

我不知道如何在Chartline类中获取 context ,因为该方法是静态的。所有代码都是从lib中的示例复制的,但我试图将linechart类分开,并面对这个问题。

2 个答案:

答案 0 :(得分:1)

基本上有几种类型的上下文。在您的情况下,您可以从v.getContext();

获取

答案 1 :(得分:1)

修改HelloME.java,如下所示: -

private TextView tvContent;
private static Context context_; 

  public HelloME(Context context, int layoutResource) {
    super(context, layoutResource);
    context_ = context;
    tvContent = (TextView) findViewById(R.id.hello);
}
public static Context getContext(){
    return context_;
}

现在在Chartline.java

 HelloME mv = new HelloME(HelloME.getContext(), R.layout.mymarketview);