首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >膨胀的布局可以访问父变量吗?

膨胀的布局可以访问父变量吗?
EN

Stack Overflow用户
提问于 2015-01-08 02:00:29
回答 1查看 181关注 0票数 0

我是Java/Android的新手,所以也许我的问题不清楚或奇怪,或者缺少一些必要的信息。如果是的话,我会修改我的问题。

我的问题是我是否可以从isClicked代码中访问C.java变量。

这是我的密码结构。

代码语言:javascript
运行
复制
(P.java)
~~~~
boolean isClicked;

(P.xml)
~~~
<my_custom_class
    android:id="@+id/my_inflate_layout"
    ~~~~~~~~~~ >
</my_custom_class>


(C.xml)
normal layout code

(C.java)
public class my_custom_class extends FrameLayout implements OnClickListener {
    ~~~~~
    LayoutInflater layoutInflater = LayoutInflater.from(getContext());
    final View view = layoutInflater.inflate(R.layout.layout_guide, this);
    ~~~~~~

谢谢。

编辑

我为面临类似问题的人提出了我的解决方案。

Child.java

代码语言:javascript
运行
复制
public class Child {
    private TestListener listener; 
    public void setTestListener(TestListener l) {
        listener = l;
    }

    @Ovrride
    public void onClick(View v) {
       // when a button is clicked
       listener.clickButton(true/false);
    }


    public interface TestListener {
        public void clickButton(boolean confirm) {
        }
    }
}

Parent.java

代码语言:javascript
运行
复制
public class Parant {
    private TestListener testListener = new TestListener() 
        @Override
        public void clickButton (boolean confirm) {
             // something want to do
        }
    };
}

Child child = (Child) findViewById(R.id.my_iniflate_layout);
child.setTestListener(testListener);

要点是,如果您获得“Child”(使用子类=(子) findViewById(R.id.my_iniflate_layout);代码),则可以访问实际的子类对象。之后,可以通过回调从父类中使用变量或方法。

我不知道。:(我以为代码只是获得一些UI对象之类的。)

这是一种很简单的方法,但对于新手来说,coult很难找到答案,因为它是简单的。那些试图回答的人可能会想,‘这家伙不可能不知道回调什么的,他一定想知道些什么把戏或其他方法。’)

EN

Stack Overflow用户

回答已采纳

发布于 2015-01-08 02:15:33

只有当您从该类中定义了对象时,才能访问来自P.java的值,因为如果对象是静态的,并且isClicked应该是公共的。

下面是它在java/android中的工作原理。

代码语言:javascript
运行
复制
//define a class
public class P{

     //public values are the one you can access from other class members
     public boolean isClicked;

    //or static but public
    public static boolean anotherIsClicked;

}

您可以按以下方式从C.java访问:

代码语言:javascript
运行
复制
public class C{


    public void someMethod(){


        //direct access because it is public static
        P.anotherIsClicked;

        //or by creating new class
        new C().isClicked;
    }

}

但是代码中有一些基本的java元素错误。我建议您在跳转像android这样的东西之前,先清楚地浏览一下java。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27831813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档