从其他类访问按钮引用

时间:2016-03-09 10:54:42

标签: android button

我有类似的东西:

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类按钮的参考? 最好的方法是什么?

3 个答案:

答案 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对象。请尝试获取已创建活动的现有对象;这样您就可以获得活动上下文和活动属性。