मैं एंड्रॉइड पर ओपनजीएल-ईएस के लिए नया हूं, इसलिए मुझे अपने नोबिश प्रश्न के लिए क्षमा करें। मैं एंड्रॉइड v2.2 - एसडीके # 8 के लिए इस कार्यक्रम का निर्माण कर रहा हूं। मेरा टैबलेट एंड्रॉइड v3.1Android पर OpenGLES - IllegalStateException: setRenderer को इस उदाहरण के लिए पहले से ही बुलाया गया है
तक समर्थन करता है मैं डेवलपर.android.com पर एक ट्यूटोरियल का पालन करके एंड्रॉइड के लिए ओपनजीएल-ईएस पर्यावरण स्थापित करने की कोशिश कर रहा हूं। कार्यक्रम ठीक संकलित, और यह डिवाइस पर एक साधारण नीली स्क्रीन प्रदर्शित करना था। हालांकि, जब मैंने इसे अपने एंड्रॉइड डिवाइस पर चलाने की कोशिश की, तो मुझे "IllegalStateException: setRenderer पहले से ही इस उदाहरण के लिए बुलाया गया है" त्रुटि मिली। तब, जब
:
public class TA_SpaceActivity extends Activity
{
private MyGLSurfaceView myGLView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
myGLView = new MyGLSurfaceView(this); //NOTE: this is where the app crashed
setContentView(myGLView);
}
}
class MyGLSurfaceView extends GLSurfaceView
{
public MyGLSurfaceView(Context context)
{
super(context);
setRenderer (new MyRenderer());
setEGLContextClientVersion(2);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
}
class MyRenderer implements GLSurfaceView.Renderer
{
public void onSurfaceCreated(GL10 unsued, EGLConfig config)
{
GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
public void onDrawFrame(GL10 unused)
{
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
public void onSurfaceChanged(GL10 unused, int width, int height)
{
GLES20.glViewport(0, 0, width, height);
}
}
सबसे पहले, मुझे यकीन है कि बनाया है कि OpenGLES के लिए उपयोग करता है-फीचर टैग AndroidManifest.xml फ़ाइल में शामिल किया गया था:
नीचे मेरी कोड है मैंने एक डीबग रन किया, ActivityThread.perfo ने "स्रोत नहीं मिला" त्रुटि संदेश दिखाया। तो, मैं इसे करने के लिए पथ जोड़ा (और मैं भी सुनिश्चित करें कि android.jar फ़ाइल निर्देशिका में मौजूद है बनाया)
फिर भी, एप्लिकेशन लाइन "myGLView = नए MyGLSurfaceView जैसा दुर्घटनाग्रस्त हो गया (यह) "। जब मैंने लॉगकैट की जांच की, तो उसने दिखाया कि कार्यक्रम ने setRenderer() फ़ंक्शन कॉल पर एक IllegalStateException फेंक दिया है।
1) क्यों फेंक था एक "स्रोत नहीं मिला" त्रुटि संदेश स्रोत के लिए लिंक था:
तो, मैं 2 पहेली है कि मैं इस समय समझ में नहीं आता है परियोजना में स्पष्ट रूप से परिभाषित?
2) यह क्यों कहा गया "इस उदाहरण के लिए setRenderer() को बुलाया गया है"? मैंने इसे केवल "MyGLSurfaceView" उपclass में एक बार बुलाया।
पहली पहेली के लिए, मैंने जो सुना, उससे ग्रहण हमेशा आपके द्वारा बनाई गई हर यादृच्छिक त्रुटि के लिए "स्रोत नहीं मिला" संदेश फेंक देगा। क्या यह सही है? (यदि नहीं, तो कृपया मुझे सही करें)।
यदि ऐसा है, तो मुझे लगता है कि इस मुद्दे के मूल कारण में मेरे सबक्लास में setRenderer() विधि के साथ कुछ करना है। पूरे दिन घूमने के बाद, मुझे इस मुद्दे को ठीक करने का कोई तरीका नहीं मिला। क्या कोई शरीर मुझे इस बात का कुछ संकेत दे सकता है कि मैं इसे ठीक करने का प्रयास कर सकता हूं "अवैध स्टेटएक्स अपवाद: सेट रेन्डरर() को इस उदाहरण के लिए बुलाया गया है" समस्या?
आपकी मदद के लिए अग्रिम धन्यवाद।
के बारे में "स्रोत नहीं मिला":
यहाँ परिवर्तन यह है कि मैंने बनाया है। इस विषय को देखें: http: // stackoverflow।कॉम/प्रश्न/14 9 42851/स्रोत-अटैचमेंट-इन-इन-इन-द-फाइल-लेआउटइनफ्लेटर-सीएल –
"स्रोत नहीं मिला" त्रुटि संदेश के बारे में। इस विषय को देखें: http://stackoverflow.com/questions/14942851/the-source-attachment-does-not-contain-the-source-for-the-file-layoutinflater-cl –