我之前已经问过类似的问题,但我找不到解决问题的线程。
我有两个重叠元素(布局和按钮),我通过回调方法更改可见性。奇怪的是,它第一次起作用,但如果我第二次尝试它就不起作用。当我单击布局中的按钮时,布局设置为View.GONE
,另一个按钮btn
设置为View.VISIBLE
。当我单击btn
按钮时,将启动另一个活动,并从该活动再次启动此活动。当无法再次切换可见性时,但是当我重新启动整个应用程序时,它第一次工作。
我还使用了Handler而不是runOnUiThread(..)
,它仍然无效。
我还检查了可见性的状态,stat是可见的,但它仍然没有显示。
这是我的代码:
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"));
}
}
答案 0 :(得分:0)
返回每个可见性,因为它意味着......
在离开FirstActivity之前添加这两行
{{1}}
答案 1 :(得分:0)
我终于解决了它。问题在于调用myCallback
方法的线程。我正在重复使用相同的线程,它将保持空闲状态,直到我再次在内部启动它。我通过在回调方法中将线程设置为null来修复此问题。