java - 为什么java从属对象不能访问父域?

标签 java android

我有一个实例化了两次的对象,每个实例都需要影响另一个对象中的某些内容。是的,它很丑,但在 Android 中,我想让一个显示/选项卡中的单选按钮与另一个显示/选项卡中的状态相匹配。我想我可以在父级中有一个方法来更新单选按钮的两个实例化,这可能是一个更好的方法。但我不明白为什么我在下面所做的不起作用,我想知道为什么即使我不使用它。

在此示例中,我将只使用“someField”作为交叉访问字段。我将“this”传递给每个实例化的对象,以确定父对象是谁,然后我应该能够通过我认为的父对象访问另一个“兄弟”对象中的字段,但它似乎不起作用。这是代码的简化版本(实际上这两个类当然在两个文件中):

public class EtMain extends TabActivity  {
    public WxFields  mDepWx;
    public WxFields  mArrWx;

    public void onCreate(Bundle savedInstanceState) {
        mDepWx = new WxFields(this);
        mArrWx = new WxFields(this);
    }
}

public class WxFields {
    private Activity mParent; // Main Window object
    public int someField;

    public WxFields(Activity myParent) {
        mParent = myParent;
    }

    public void someSetup() {
        Button mButton = (Button) mParent.findViewById(R.id.someRes); //<---mParent works here
        mParent.mArrWx.someField = 0; //<------------ mArrWx cannot be resolved
        //I don't seem to be able to access a field in the parent object
        //Yes, it's not symmetrical, but the code is just for illustration purposes

    }
}

最佳答案

实际上,如果您将 mParent 声明为 EtMain 而不是 Activity,它将起作用(尽管它会很难看...)

Activity 没有这样的字段 (mArrWx)

public class EtMain extends TabActivity  {
    public WxFields  mDepWx;
    public WxFields  mArrWx;

    public void onCreate(Bundle savedInstanceState) {
        mDepWx = new WxFields(this);
        mArrWx = new WxFields(this);
    }
}

public class WxFields {
    private EtMain mParent; // Main Window object
    public int someField;

    public WxFields(EtMain myParent) {
        mParent = myParent;
    }

    public void someSetup() {
        Button mButton = (Button) mParent.findViewById(R.id.someRes); //<---mParent works here
        mParent.mArrWx.someField = 0;
    }
}

关于java - 为什么java从属对象不能访问父域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7323531/

相关文章:

java - 无法在不同方法中定义的内部类中引用非最终变量 str - 如何解决此问题?

java - 使用java在内存中创建一个excel文件并作为字节传递以供下载

Android 以编程方式从类中创建按钮 onClick

java - 更改了 android 项目中的包名称,现在出现 noclassdeffound 错误

android - 软键盘打开时 DialogFragment 不会上升

java - DateTimeFormatter.ofPattern 语言选项

java - 如何向图表添加趋势线?

java - 我需要一个正则表达式来匹配 puppet 事实

android - 华为系统设置的最新自动启动 Activity Intent 是什么?

android - 反转ListView显示顺序