Java 如何初始化全局变量android

Java 如何初始化全局变量android,java,android,Java,Android,我想将表Int[]y初始化为全局变量,在哪里以及如何初始化 直线图的代码 public class LineGraph{ Context applicationContext; Boolean Buttons; Boolean Legend; Boolean Grid; public Intent getIntent(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPrefer

我想将表Int[]y初始化为全局变量,在哪里以及如何初始化 直线图的代码

public class LineGraph{
Context applicationContext;
Boolean Buttons;
Boolean Legend;
Boolean Grid;
public Intent getIntent(Context context) {

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

    Buttons = prefs.getBoolean("view", true);
    Legend = prefs.getBoolean("legend", true);
    Grid = prefs.getBoolean("Grid", false);
    // Our first data
    int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
    int[] y =  { 30, 34, 45, 57, 77, 89, 100, 111 ,123 ,145 }; // y values!
    TimeSeries series = new TimeSeries("Line1"); 
    for( int i = 0; i < x.length; i++)
    {
        series.add(x[i], y[i]);
    }

    // Our second data
    int[] x2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
    int[] y2 =  { 145, 123, 111, 100, 89, 77, 57, 45, 34, 30}; // y values!
    TimeSeries series2 = new TimeSeries("Line2"); 
    for( int i = 0; i < x2.length; i++)
    {
        series2.add(x2[i], y2[i]);
    }

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(series);
    dataset.addSeries(series2);

    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
    mRenderer.setYLabels(10);
    mRenderer.setYLabelsAlign(Align.RIGHT);
    if (Buttons==true){
    mRenderer.setZoomButtonsVisible(true);}
    else{
    mRenderer.setZoomButtonsVisible(false); 
    }
    if (Legend==true){
        mRenderer.setShowLegend(true);
    }else{
        mRenderer.setShowLegend(false);
    }
    if (Grid==true){
        mRenderer.setShowGrid(true);
    }else{
        mRenderer.setShowGrid(false);
    }
    mRenderer.setApplyBackgroundColor(true);
    mRenderer.setBackgroundColor(Color.BLACK);
    XYSeriesRenderer renderer = new XYSeriesRenderer(); // This will be used to customize line 1
    XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 2
    mRenderer.addSeriesRenderer(renderer);
    mRenderer.addSeriesRenderer(renderer2);

    // Customization time for line 1!
    renderer.setColor(Color.WHITE);
    renderer.setPointStyle(PointStyle.SQUARE);
    renderer.setFillPoints(true);
    // Customization time for line 2!
    renderer2.setColor(Color.YELLOW);
    renderer2.setPointStyle(PointStyle.DIAMOND);
    renderer2.setFillPoints(true);

    Intent intent1 = new Intent (context, GraphLoading.class);
    intent1.putExtra("SomeKey",x);

    Intent intent = ChartFactory.getLineChartIntent(context, dataset, mRenderer, "Line Graph Title");
    return intent;

}

}

我想让GraphLoading可以编辑这个表和类LineGraph查看更改

将这个声明放在布尔变量和getIntent函数之间:
公共静态int[]y并在y分配之前删除
int[]
。现在,您可以在包的每个方法和类中使用数组y

您可以创建此类的
静态
对象。
例如:

public class LineGraph{
   public int Number;
   public LineGraph() {}
}
然后您应该在任何活动中创建此类的静态对象,例如
ExampleActivity

public static LineGraph LG = new LineGraph();
//then set some data to LG
LG.Number = 10;
然后,您可以在其他活动中使用此clas中的数据:

int Test = ExampleActivity.LG.Number;
//We will have 10


或第二种方式。您可以使用
Intent
(在
FirstPage
活动中)发布数据:

然后在
SecondPage
活动中,您可以获得如下数据:

Intent sender = getIntent();
String some_str = sender.getExtras().getString("TEST_STRING");
int some_int = sender.getExtras().getInt("TEST_INT");
int[] some_int_array = sender.getExtras().getIntArray("TEST_INT_ARRAY");

int[]y
声明为类变量(静态字段)和
public
,以便在其包中的其他类中也可以访问它:

public class LineGraph {
    public static int[] y =  {30, 34, 45, 57, 77, 89, 100, 111, 123, 145};
    Context applicationContext;
    // ...

然后像这样从其他类引用它:
LineGraph.y

例如:

public class GraphLoading extends Activity {
    private LineGraph parent;

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

        int y[] = LineGraph.y;
    }
}

Java不支持顶级静态类。只有嵌套类可以是静态的。@Simon是的,你说得对。我将编辑答案。谢谢,您可以添加如何使用int[]y表(第一种方式)。@user2908626使用“getIntent()”方法将“int[]y”公开。在SomeActivity中创建此类,并进行渲染(将值设置为“int[]y”)。然后在其他一些活动int[]中,some_int_array=SomeActivity.LG.y;你能在我的代码中使用它吗(我是业余的…@user2908626为什么不能?能在非静态字段中使用它吗?我想更改GraphLoadnig类中的表y[],因为它在静态字段中,所以我无法更改它。@user2908626您可以更改静态字段…@user2908626我需要告诉您如何更改它?我不明白你在问什么,但这里有一个我刚刚为你做的例子:我粘贴和编辑你的代码,但我有一个错误
public class LineGraph {
    public static int[] y =  {30, 34, 45, 57, 77, 89, 100, 111, 123, 145};
    Context applicationContext;
    // ...
public class GraphLoading extends Activity {
    private LineGraph parent;

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

        int y[] = LineGraph.y;
    }
}