एक आवेदन जो मैं वर्तमान में विकसित कर रहा हूं वह सर्वर से संचार कर रहा है और संचार प्रक्रिया अपने स्वयं के धागे में चलती है। असीमित कॉल हैं - उदाहरण के लिए लॉगिन() और onLoginResponse()।
लॉगिन() मुख्य गतिविधि में कहा जाता है और प्रतिक्रिया मुख्य गतिविधि में भी संभाली जाती है (onLoginResponse())। onLoginResponse() विधि में वहाँ updateGUIState() विधि जो लेआउट तत्वों को संशोधित करता है:
private void updateGUIState() {
Log.i(TAG, "executing updateGUIState");
arrangeLayoutElements();
txtTime.setText(mStrRecordingTime);
if (settings.isRecording()) {
//btnAction.setText("Stop");
btnAction.setImageResource(R.drawable.button_stop);
} else {
//btnAction.setText("Capture");
btnAction.setImageResource(R.drawable.button_record);
}
//set privacy level text
if (settings.getPrivacyLevel() == 0) {
txtPrivacyLevel.setText("Private");
} else if (settings.getPrivacyLevel() == 1) {
txtPrivacyLevel.setText("Public");
}
if (settings.isMute()) {
muteIcon.setIconImage(R.drawable.ic_volume_off_small);
} else {
muteIcon.setIconImage(R.drawable.ic_volume_small);
}
if (mIsUploading) {
txtUploadingText.setVisibility(View.VISIBLE);
uploadingProgressBar.setVisibility(View.VISIBLE);
} else {
txtUploadingText.setVisibility(View.INVISIBLE);
uploadingProgressBar.setVisibility(View.INVISIBLE);
}
if (mEncoderConnection != null) {
txtConnectionStatus.setText("Connected");
} else {
txtConnectionStatus.setText("Disconnected");
}
}
निष्पादन इस विधि अनुप्रयोग क्रैश हो जाता है (जब onLoginResponse() से कहा जाता है) तक पहुँच जाता है और लॉग निम्न संदेश प्रदर्शित करता है:
android.view.ViewRoot $ CalledFromWrongThreadException: केवल दृश्य धागा जिसने दृश्य पदानुक्रम बनाया है, उसके विचारों को स्पर्श कर सकता है।
किसी को भी पता है कि यह कैसे आदेश लेआउट को संशोधित करने से पहले उचित धागा करने के लिए स्विच और समस्या को ठीक करने में तर्क संशोधित करने के लिए संभव है?
धन्यवाद!
मैं मैं इस सवाल का जवाब एक लंबे समय के एक जाना, मैं ठीक उसी समस्या थी और मुझे एक सप्ताह के बारे में ले लिया समाधान यह पता लगाने की है, जो यू वास्तव में क्या उल्लेख किया है पाया इच्छा – aryaxt
मैं इसके लिए कम से कम 5 अलग अलग जवाब मिल गया अपवाद। केवल यह मेरे लिए काम किया! –