我是Java / Android的新手,所以也许我的问题不清楚或奇怪或缺少一些必要的信息。如果是,我会编辑我的问题。
我的问题是我是否可以从C.java代码访问isClicked变量。
这是我的代码结构。
(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 child =(Child)findViewById(R.id.my_iniflate_layout); code) 您可以访问实际的Child类对象。之后,您可以通过回调使用父类的变量或方法。
我不知道。 :((我认为代码只是得到一些UI对象或东西。)
这是一种非常简单的方式,但很难找到新手,因为它很简单。那些试图回答的人可能会认为“这个家伙根本不知道回调或某事,他必须想知道一些技巧或其他方式。”)
答案 0 :(得分:0)
只有当您从该类定义了对象时才能访问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 UI这样的东西之前要清楚地浏览java。