2016-05-01 46 views
0

所以基本上我有我的MainActivity如何从其他课程更改按钮的可见性?

Button button1 = (Button)findViewById(R.id.button1); 
button1.setVisibility(View.GONE); 

什么是我的按钮知名度从我GameView类改变方式按钮?

if(state == State.PAUSED){ 
//change button visibility 
} 
+0

什么是GameView?一个片段? – Lino

回答

0

最推荐的方式实现这一目标是有一个本地BroadcastReceiver(子类的MainActivity)将从广播读取信息,并根据该设置按钮的可见性。

而且

发送广播形式GameView用正确的消息。

似乎很复杂,但相信我,它是最好的和推荐的方式来做到这一点。

Link为教程。

0

您需要制作公共静态字段Button button1;

如果你想调用另一个类按钮即可调用该类和按钮像例如

FirstClass.button1

+0

静态字段不是推荐的方式 –

+0

为什么不推荐它? – GlacialMan

+1

Android编码标准如此说。一旦活动被操作系统杀死,或者视图不再需要并且可以被垃圾收集,它就会为空,所以当你使用这种方法时你会得到NullPointerException。最好在活动上定义一个方法,以便按下按钮并传递活动本身,而不是将视图变量暴露给外部类 –

0

尽量保持你想切换到视图的引用(按钮),并改变它在您认为合适的任何方式

button1.setVisibility(View.GONE); 

or 
button1.setVisibility(View.VISIBLE); 
0

声明你按钮Button1的作为静态全局变量在MainActivity像

public Static Button button1; 

那么你GameView代码将

if(state == State.PAUSED){ 
    MainActivity.button1.setVisibility(View.GONE) 
} 
+1

静态变量不是推荐的方法,尽管 –

+0

我知道@ cricket_007。 LocalBroadcast Receiver是最好的解决方案。但我给了他一个即时解决方案。 – Masum

+0

当我试图通过id找到它时,我得到这个错误:无法对类型为Activity的非静态方法findViewById(int)进行静态引用。 – Sadboy

相关问题