初学者 - 使用在另一个类中的一个类中定义的变量

Eri*_*ric 5 eclipse android global-variables android-intent android-activity

所以,让我们说在我的主要活动中,我有一个像这样声明的数组,即使用任何main方法都没有任何问题:

public int currentPrices[] = {0,0,0,0,0,0,0,0,0};
Run Code Online (Sandbox Code Playgroud)

现在,我的buyDialog类如下:

package foosh.Frontier;


import android.app.Activity;
import android.os.Bundle;
import foosh.Frontier.*;

public class buyDialog extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // Be sure to call the super class.
        super.onCreate(savedInstanceState);

        currentPrices[0]=999;

        //insert setup magic here
        setContentView(R.layout.buydialog);
}  }
Run Code Online (Sandbox Code Playgroud)

Eclipse坚持说当前的价格无法解决.如何将子活动链接到父活动的变量?

我可能做错了,因为我很擅长构建它们.但是这里是主线:

case R.id.buyButton1: 
            currentRes = masterRes.get(0);
            Intent intent = new Intent();
            intent.setClass(main.this, buyDialog.class);
            startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

Chr*_*son 9

简单的答案是你必须使用包含实例的名称来限定它.

因此,如果实例myinstance要访问该currentPrices字段,您可以这样做:

myinstance.currentPrices
Run Code Online (Sandbox Code Playgroud)

但是,你真的应该使用getter和setter,这里有很多关于实际获取活动实例句柄的问题.我建议您在掌握Android之前先阅读一本介绍Java书籍.查看http://math.hws.edu/javanotes/以获得良好的在线介绍.

基于您的标记,我假设您有一些全局变量的概念.Java中没有这样的东西.实际上,您可以拥有static全局可访问的变量.例如

public class MyClass{
  public static int MY_VALUE = 4;
}
Run Code Online (Sandbox Code Playgroud)

您可以通过写作访问

MyClass.MY_VALUE
Run Code Online (Sandbox Code Playgroud)

但是,对于实例变量,即不受static关键字限定的实例变量,您有一个已通过new关键字分配的类的实例.

例如

MyClass someInstance = new MyClass();
someInstance.currentPrices
Run Code Online (Sandbox Code Playgroud)

这与活动相比更复杂的原因是因为您无法访问正在使用的活动类的实例,除非您做了一些非常有创意的事情.

那有意义吗?