我有类似的东西:
public class A()
{
private Button myButton;
public void setMyButton(Button myButton)
{
this.myButton = myButton;
}
public Button getMyButton()
{
return myButton;
}
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
setMyButton(button);
}
public class B()
{
public void exampleMethod()
{
A aObject = new A();
Button button = aObject.getMyButton();
}
}
B类中的按钮始终为null。我试过了:
在A级
public Button myButton;
在B班
A aObject = new A();
Button button = aObject.myButton;
但它也不起作用。 我确信首先是按钮启动,然后是按钮参考。我用日志检查了一下。 我不知道发生了什么,因为A级的“getMyButton”工作正常。如何在B类中获得A类按钮的参考? 最好的方法是什么?
答案 0 :(得分:0)
该按钮始终为null,因为它在onCreate中设置,不会自动调用。让我猜一下,A应该是一个基于签名的Activity子类,对吧?在这种情况下,你做错了。
*您无法通过new创建活动,因此无法正确初始化。
*像这样访问一个Activity的视图真的很奇怪。将视图传递给B更有意义,因为B可能由A拥有。如果活动A没有B,那么你可能做错了。几乎如果你需要这样做,你可能错误地设计了一些东西。
答案 1 :(得分:0)
您正在进行的方式仅适用于JAVA,而不适用于ANDROID。
因为ACTIVITY类。只有在创建生命周期并且无法将一个活动的UI元素传递给另一个时,才会创建活动类引用。
由于该按钮与您案例中的'A'
类相关联,并且您希望在类'B'
中进行此操作,因此您必须启动Activity及其生命周期以及setContentView(R.layout.activity_main);
其他方式是从任何类中获取您想要的数据,并在“A”类本身中发布值。这可以通过startActivityForResult();
答案 2 :(得分:0)
看起来您正在自己创建活动的新java对象。请尝试获取已创建活动的现有对象;这样您就可以获得活动上下文和活动属性。