[英]setVisibility(int) not working second time in a callback
我知道以前有人問過類似的問題,但是我找不到解決我問題的線程。 我有兩個重疊的元素(布局和按鈕),我通過回調方法更改其可見性。 奇怪的是,它第一次起作用,但是如果我第二次嘗試它就不起作用。 當我單擊布局中的按鈕時,布局設置為View.GONE
,另一個按鈕btn
設置為View.VISIBLE
。 當我單擊btn
按鈕時,會啟動另一個 Activity,然后從該活動中再次啟動該 Activity。 那是無法再次切換可見性的時候,但是當我重新啟動整個應用程序時,它會第一次工作。 我還使用了 Handler 而不是runOnUiThread(..)
,但它仍然無法正常工作。 我還檢查了可見性的狀態,統計數據是可見的,但它仍然沒有顯示。
這是我的代碼:
public class FirstActivity extends AppCompatActivity{
private LinearLayout buttonLayout;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
..
buttonLayout = (LinearLayout) findViewById(R.id.buttonLayout);
btn = (Button) findViewById(R.id.btn);
}
@Override
public void myCallback(int n){
this.runOnUiThread(() -> {
buttonLayout.setVisibility(View.GONE);
btn.setVisibility(View.VISIBLE);
});
}
public void onClick1(View view){
Intent intent = new Intent(this, Result.class);
startActivity(intent);
finish();
}
}
這是我的布局:
<LinearLayout
android:id="@+id/buttonLayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="300px"
android:weightSum="1">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="x"
android:textColor="@android:color/white"
android:id="@+id/testNoBtn"
android:onClick="onClick1"
android:background="#f44336"
android:layout_weight="0.45"
android:enabled="false"
android:visibility="visible"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="✔"
android:textColor="@android:color/white"
android:id="@+id/yesBtn"
android:onClick="onClick2"
android:background="#4caf50"
android:layout_weight="0.45"
/>
</LinearLayout>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="see result"
android:background="#03a9f4"
android:textColor="@android:color/white"
android:layout_alignParentBottom="true"
android:layout_marginTop="300px"
android:onClick="onContinueClicked"
android:visibility="invisible"
/>
這是下一個活動:
public class Result extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
...
}
public void tryAgain(){
startActivity(new Intent("android.intent.action.FirstActivity"));
}
}
在離開 FirstActivity 之前返回所有可見性,因為它的意思......
在離開 FirstActivity 之前添加這兩行
btn.setVisibility(View.INVISIBLE);
buttonLayout.setVisibility(View.VISIBLE);
我終於解決了。 問題在於調用myCallback
方法的線程。 我正在重用同一個線程,它會保持空閑狀態,直到我再次在內部啟動它。 我通過在回調方法中將線程設置為 null 來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.