抱歉,我知道这个问题已经问过几次了。 但是我尝试了建议的解决方案,但没有成功。
在我的Android应用中,我开始无处不在地随机出现此错误,我没有修改代码,它运行了好几次,现在它向我显示此错误:
`E/ViewRootImpl: sendUserActionEvent() mView == null`
当我在建立BluetoothConnectionService的java类中调用时会发生这种情况。具体来说,它是在调用关闭“进度对话框”的方法时发生的。
`public ConnectedThread(BluetoothSocket mSocket) {
Log.d(TAG, "ConnectedThread: Starting");
mmBTSocket = mSocket;
InputStream mTempIn = null;
OutputStream mTempOut = null;
// dismiss the progressdialog when the connection is established.
try{
mProgressDialog.dismiss();
} catch (NullPointerException e) {
Log.e(TAG, "ConnectedThread: Couldn't dismiss progressDialogBox" + e.getMessage(), e);
}
try {
mTempIn = mmBTSocket.getInputStream();
mTempOut = mmBTSocket.getOutputStream();
} catch (IOException e) {
Log.e(TAG, "ConnectedThread: Failed to get I/O Stream: " + e.getMessage(), e);
}
mInStream = mTempIn;
mOutStream = mTempOut;
}`
在Dialog.java文件中,我认为它是通过这种方法发生的。
`@Override
public void dismiss() {
if (Looper.myLooper() == mHandler.getLooper()) {
dismissDialog();
} else {
mHandler.post(mDismissAction);
}
}`
我在stackoverflow上找到的关于此错误的先前建议没有奏效。我尝试将以下代码添加到我的AndroidManifest中,但该代码无效:
` android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenLayout|screenSize"
android:label="@string/app_name"`
请,任何建议都将对我有所帮助,因为我在该应用程序开始运行之前就已经完成了该应用程序,我不知道为什么!
答案 0 :(得分:1)
您需要检查上下文是否为空。当您指向的上下文或视图为空时,通常会发生这种情况。只需在调用之前尝试执行以下检查即可:
if ( getContext() != null && getView != null )
{
// do your stuff here
}
还需要更新主线程上的视图。如果不在主线程上,则应实现处理程序以更新UI组件。请访问以下链接以获取详细信息:
https://developer.android.com/training/multiple-threads/communicate-ui
执行以下操作:
Handler handler = new Handler(); // write in onCreate function
handler.post(new Runnable() {
@Override
public void run()
{
// Update your UI components here
}
});