2011-08-12 235 views
1

我试图膨胀一个视图,充当我的glSurfaceView的加载屏幕,同时在运行期间交换纹理(我知道如何在我的onCreate中完成)。它只是一个RelativeLayout,中间有一个进度条,当它完成交换后,它会消失,但它不会正确膨胀。膨胀视图

inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    loading = inflater.inflate(R.layout.loading,null); 
RelativeLayout loadingScreen = (RelativeLayout) findViewById(R.id.loadingScreen); 

其中loadingScreen是相对布局的ID。

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/loadingScreen" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:visibility="visible" > 

    <ProgressBar 
     android:id="@+id/progressBar1" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" > 
    </ProgressBar> 

    <EditText 
     android:id="@+id/editText android:layout_height=" 
     android:layout_width="wrap_content" 
     wrap_content="" > 
    </EditText> 

</RelativeLayout> 

对于测试,我添加上面的以下附加代码一个EditText来测试它:

EditText tester = (EditText) findViewById(R.id.editText); //Now we have an object 
    tester.setText("dfdfds"); 

和错误日志:

08-12 15:07:35.630: ERROR/ActivityThread(2502): Failed to inflate 
08-12 15:07:35.630: ERROR/ActivityThread(2502): android.view.InflateException: Binary XML file line #5: Error inflating class com.huskybus.CampusMapOpenGL 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.Activity.setContentView(Activity.java:1657) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at com.huskybus.Main.onCreate(Main.java:91) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.os.Looper.loop(Looper.java:130) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.app.ActivityThread.main(ActivityThread.java:3835) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at dalvik.system.NativeStart.main(Native Method) 
08-12 15:07:35.630: ERROR/ActivityThread(2502): Caused by: java.lang.reflect.InvocationTargetException 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at java.lang.reflect.Constructor.constructNative(Native Method) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  ... 21 more 
08-12 15:07:35.630: ERROR/ActivityThread(2502): Caused by: java.lang.NullPointerException 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  at com.huskybus.CampusMapOpenGL.<init>(CampusMapOpenGL.java:101) 
08-12 15:07:35.630: ERROR/ActivityThread(2502):  ... 24 more 
08-12 15:07:35.637: DEBUG/AndroidRuntime(2502): Shutting down VM 
08-12 15:07:35.637: WARN/dalvikvm(2502): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502): FATAL EXCEPTION: main 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.huskybus/com.huskybus.Main}: android.view.InflateException: Binary XML file line #5: Error inflating class com.huskybus.CampusMapOpenGL 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.os.Looper.loop(Looper.java:130) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.ActivityThread.main(ActivityThread.java:3835) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at dalvik.system.NativeStart.main(Native Method) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502): Caused by: android.view.InflateException: Binary XML file line #5: Error inflating class com.huskybus.CampusMapOpenGL 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.Activity.setContentView(Activity.java:1657) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at com.huskybus.Main.onCreate(Main.java:91) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  ... 11 more 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502): Caused by: java.lang.reflect.InvocationTargetException 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at java.lang.reflect.Constructor.constructNative(Native Method) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  ... 21 more 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502): Caused by: java.lang.NullPointerException 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  at com.huskybus.CampusMapOpenGL.<init>(CampusMapOpenGL.java:101) 
08-12 15:07:35.653: ERROR/AndroidRuntime(2502):  ... 24 more 
+0

时需要使用视图查看你能提供的堆栈跟踪呢?添加了 – Dan

+0

,并包含我的测试代码。 – jfisk

回答

2

尝试loading.findViewById(...)而不只是findViewById(...)

+0

这似乎工作,它不再崩溃,但我不能看到它。任何想法,我怎么能使它膨胀在当前的观点? – jfisk

+0

一旦视图膨胀到对象“加载”中,就会像处理其他布局对象一样对待它,并使用addView将其附加到现有布局。充气只是将xml中的复杂布局加载到内存中的一种快速而简单的方法,而不是通过代码手动构建。如果你想替换你已经加载的所有布局对象,我会简单地得到顶层的父布局,删除所有的子元素,并追加“加载” – atraudes

+0

我不需要删除以前,认为它几乎是一个飞溅屏幕。我在我的main.xml文件中设置了我的glSurfaceView,我将如何在这个组合中使用addView? – jfisk

0

我也有这些类型的错误。我发现错误是因为我的文本编辑器名称与我的文本编辑器ID不匹配。

0

当你inflatet你发现孩子的看法是这样

inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    loading = inflater.inflate(R.layout.loading,null); 
    RelativeLayout loadingScreen = (RelativeLayout) loading.findViewById(R.id.loadingScreen);