我是Java/Android的新手,所以也许我的问题不清楚或奇怪,或者缺少一些必要的信息。如果是的话,我会修改我的问题。
我的问题是我是否可以从isClicked代码中访问C.java变量。
这是我的密码结构。
(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
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
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很难找到答案,因为它是简单的。那些试图回答的人可能会想,‘这家伙不可能不知道回调什么的,他一定想知道些什么把戏或其他方法。’)
发布于 2015-01-08 02:15:33
只有当您从该类中定义了对象时,才能访问来自P.java的值,因为如果对象是静态的,并且isClicked应该是公共的。
下面是它在java/android中的工作原理。
//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访问:
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。
https://stackoverflow.com/questions/27831813
复制相似问题