setvisibility中的应用程序崩溃android
问题描述:
我是一名新开发人员,在设置覆盖我的UI的布局的可见性以在运行脚本时禁用它时遇到问题。setvisibility中的应用程序崩溃android
这里是我的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.action_settings:
return true;
case R.id.action_loadfile:
saveTellNamesArray();
LoadFile(txtFolder, ScriptArray);
return true;
case R.id.action_runscript:
disableLayout();
stopScript = false;
scriptThread = new Thread(new Runnable() {
@Override
public void run() {
while (!scriptThread.isInterrupted() && !stopScript) {
runScript();
}
if (stopScript)//revisar
enableLayout();
}
});
scriptThread.start();
//enableLayout();
return true;
case R.id.action_stopscript:
if (scriptThread != null) {
//scriptThread.interrupt();
stopScript = true;
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
的问题是,应用程序,只要我调用enableLayout()函数崩溃:
public void disableLayout() {
uiBlockLayout.setVisibility(FrameLayout.VISIBLE);
uiBlockLayout.bringToFront();
}
public void enableLayout() {
uiBlockLayout.setVisibility(FrameLayout.GONE);
}
什么问题可能是任何线索?
答
任何有关问题的线索?从
non UI Thread
是,问题已存在的存取UI元素(主叫enableLayout
方法scriptThread
线程中运行方法)。
使用runOnUiThread
方法访问非UI线程浏览:
if (stopScript){
runOnUiThread(new Runnable() {
@Override
public void run() {
enableLayout();
}
});
}
请,** **份额的**记录错误**。 – Nawako
Nawako说了些什么,再加上'uiBlockLayout'被赋值的范围。 – Mena
谢谢大家,由@ρяσѕρєяK给出的答案是正确的。感谢您的时间。 – Sombrero22