静态方法如何从调用 activity 中获取上下文?
How a static method get context from the calling activity?
我正在使用 MPAndroidChart
库来绘制图表,我在使用 marketview 时遇到了一些问题,代码如下:
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);
}
我不知道如何在 class Chartline 中获取 context,因为该方法是静态的。所有代码都是从 lib 中的示例复制的,但我试图分离线图 class,并面临这个问题。
基本上有几种类型的上下文。在你的情况下,你可以从 v.getContext();
修改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);
我正在使用 MPAndroidChart
库来绘制图表,我在使用 marketview 时遇到了一些问题,代码如下:
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);
}
我不知道如何在 class Chartline 中获取 context,因为该方法是静态的。所有代码都是从 lib 中的示例复制的,但我试图分离线图 class,并面临这个问题。
基本上有几种类型的上下文。在你的情况下,你可以从 v.getContext();
修改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);