2016-05-01 45 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

相關問題