我正在尝试使用setContentView
方法将我的观点带到前面,但是这样做我得到了这个错误。
从这里搜索类似问题我发现在尝试获取/设置布局视图对象的值时,通常会出现此错误。没有实例化但在这里不是这种情况,我甚至无法设置视图。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ticker);
Thread tmr = new Thread() {
public void run() {
try {
sleep(1000);
} catch (InterruptedException iEx) {
iEx.printStackTrace();
} finally {
User usrObj = new User();
if (usrObj.authenticateUser()) {
Intent mainActivity = new Intent(
"android.intent.action.Homeview");
startActivity(mainActivity);
} else {
setContentView(R.layout.login); // <- ERROR
activateLogin();
}
}
}
};
tmr.start();
}
答案 0 :(得分:1)
您需要调用runOnUiThread来更改线程中的布局。
runOnUiThread(new Runnable() {
@Override
public void run() {
User usrObj = new User();
if (usrObj.authenticateUser()) {
Intent mainActivity = new Intent("android.intent.action.Homeview");
startActivity(mainActivity);
} else {
setContentView(R.layout.login); // <- ERROR
activateLogin();
}
}
});
作为旁注,请确保您不对字符串进行硬编码,以避免拼写错误.-
Intent mainActivity = new Intent(YourActivity.this, android.intent.action.Homeview.class);
答案 1 :(得分:1)
您正在从非UI线程调用setContentView(...)。将其移动到主(UI)线程或将该单个调用包装在:
runOnUIThread(new Runnable() {
@Override
public void run() {
setContentView(R.layout.login);
}
});