Tôi mới sử dụng OpenGL-ES trên Android, vì vậy xin lỗi vì câu hỏi khó hiểu của tôi. Tôi đang xây dựng chương trình này cho Android v2.2 - SDK # 8. Máy tính bảng của tôi hỗ trợ tối đa Android v3.1OpenGLES trên Android - IllegalStateException: setRenderer đã được gọi cho trường hợp này
Tôi đang cố gắng thiết lập môi trường OpenGL-ES cho Android bằng cách làm theo hướng dẫn trên developer.android.com. Chương trình được biên dịch tốt, và nó được cho là để hiển thị một màn hình màu xanh đơn giản trên thiết bị. Tuy nhiên, khi tôi cố gắng chạy nó trên thiết bị Android của mình, tôi nhận được lỗi "IllegalStateException: setRenderer đã được gọi cho lỗi này".
Dưới đây là mã của tôi:
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);
}
}
Trước tiên, tôi chắc chắn rằng các thẻ sử dụng-tính năng cho OpenGLES đã được bao gồm trong file AndroidManifest.xml:
Sau đó, khi Tôi đã chạy Debug, ActivityThread.perfo hiển thị thông báo lỗi "Source Not Found". Vì vậy, tôi đã thêm đường dẫn đến nó (và tôi cũng chắc chắn rằng các tập tin android.jar tồn tại trong thư mục)
Tuy nhiên, các ứng dụng bị rơi ngay tại dòng "myGLView = new MyGLSurfaceView (điều này) ". Khi tôi kiểm tra LogCat, nó cho thấy chương trình đã ném ra một IllegalStateException tại cuộc gọi hàm setRenderer().
Vì vậy, tôi có 2 câu đố mà tôi không hiểu tại thời điểm này:
1) Tại sao nó ném một "Nguồn Not Found" thông báo lỗi khi liên kết đến nguồn là được xác định rõ ràng trong dự án?
2) Tại sao nó nói "setRenderer() đã được gọi cho trường hợp này"? Tôi chỉ gọi nó một lần trong lớp con "MyGLSurfaceView" của tôi.
Đối với câu đố thứ nhất, từ những gì tôi đã nghe, Eclipse hầu như luôn luôn gửi thông báo "Không tìm thấy nguồn" khi cho mọi lỗi ngẫu nhiên bạn thực hiện. Đúng không? (nếu không, hãy sửa tôi).
Nếu đúng như vậy, thì tôi nghĩ nguyên nhân gốc rễ của vấn đề có liên quan đến phương thức setRenderer() trong lớp con của tôi. Sau cả ngày rối tung xung quanh, tôi không thể tìm ra cách để khắc phục vấn đề này. Có cơ thể nào cho tôi một số con trỏ của những gì tôi có thể cố gắng khắc phục điều này "IllegalStateException: setRenderer() đã được gọi cho trường hợp này" vấn đề?
Cảm ơn bạn trước sự giúp đỡ của bạn.
Giới thiệu "Nguồn không tìm thấy". Nhìn chủ đề này: http: // stackoverflow.com/questions/14942851/the-source-attachment-does-not-contains-the-source-cho-the-file-layoutinflater-cl –
Giới thiệu về thông báo lỗi "Không tìm thấy nguồn". Xem chủ đề này: http://stackoverflow.com/questions/14942851/the-source-attachment-does-not-contain-the-source-for-the-file-layoutinflater-cl –