2011-01-14 7 views
5

Aquí es la excepción:NullPointerException lanzada en Eclipse al intentar abrir la vista de Android XML?

java.lang.NullPointerException 
at android.widget.TextView.setTextColor(TextView.java:1787) 
at android.widget.TabHost$LabelIndicatorStrategy.createIndicatorView(TabHost.java:521) 
at android.widget.TabHost.addTab(TabHost.java:204) 
at com.android.layoutlib.bridge.Bridge.setupTabHost(Bridge.java:880) 
at com.android.layoutlib.bridge.Bridge.postInflateProcess(Bridge.java:807) 
at com.android.layoutlib.bridge.Bridge.postInflateProcess(Bridge.java:813) 
at com.android.layoutlib.bridge.Bridge.computeLayout(Bridge.java:401) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.computeLayout(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.pageChange(Unknown Source) 
at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) 
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) 
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) 
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2743) 
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1429) 
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) 
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1407) 

Aquí está el archivo main.xml se asocia con:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@android:id/tabhost"> 

    <LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="5dp"> 
    <TabWidget 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@android:id/tabs" /> 
    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <include layout="@layout/basic_tab" /> 
     <include layout="@layout/advanced_tab" /> 

    </FrameLayout> 
    </LinearLayout> 
</TabHost> 

Tanto la incluyen archivos trabajan individualmente bien. Pero cuando se encuentra en un diseño de pestaña, se produce este error. ¿Alguna solución?
Aquí está el código:

import android.app.TabActivity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.widget.TabHost; 

import com.mohit.geo2do.R; 

public class TaskEdit extends TabActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.edit_task); 

     Resources res = getResources(); 
     TabHost host = getTabHost(); 

     host.addTab(host.newTabSpec("basic") 
      .setIndicator("Basic", res.getDrawable(android.R.drawable.ic_menu_edit)) 
      .setContent(R.layout.basic_tab)); 
     host.addTab(host.newTabSpec("advanced") 
      .setIndicator("Advanced", res.getDrawable(android.R.drawable.ic_menu_manage)) 
      .setContent(R.layout.advanced_tab)); 

     host.setCurrentTab(0); 
    } 
} 

Y aquí están los archivos XML, advanced_tab:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:id="@+id/advanced_tab_layout"> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:text="Notify me:" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" 
    /> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:id="@+id/task_due" 
     android:text="when task is due" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" 
     android:paddingTop="5dip" 
    /> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:id="@+id/task_overdue" 
     android:text="when task is overdue" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" 
     android:paddingTop="5dip" 
    /> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:id="@+id/task_datetime" 
     android:text="at" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" 
     android:paddingTop="5dip" 
    /> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:text="Calendar:" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" 
    android:paddingTop="5dip" 
    /> 

    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:id="@+id/task_calendar" 
     android:text="Create a calendar event" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" 
     android:paddingTop="5dip" 
    /> 

</LinearLayout> 

Y basic_tab.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:id="@+id/basic_tab_layout"> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:text="Title:" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" 
    android:paddingTop="5dip" 
/> 

<EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/title" 
    android:hint="Name of the task..." 
/> 

<TextView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="Importance:" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" 
    android:paddingTop="10dip" 
/> 

<RadioGroup 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" 
    android:id="@+id/importance_grp"> 

    <RadioButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="High" 
     android:paddingRight="25dip" 
    /> 
    <RadioButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Medium" 
     android:checked="true" 
     android:paddingRight="25dip" 
    /> 
    <RadioButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Low" 
    /> 

</RadioGroup> 

<TextView 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:text="Due Date:" 
    android:textColor="#FFFFFF" 
    android:textStyle="bold" 
    android:paddingTop="10dip" 
/> 

<Spinner 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/due_date" 
    android:prompt="@string/due_date_prompt" 
    android:entries="@array/due_date_entries" 
/> 

    <TextView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:text="Notes:" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" 
     android:paddingTop="10dip" 
    /> 

    <EditText 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:id="@+id/notes" 
     android:hint="Notes..." 
     android:minLines="4" 
    /> 

</LinearLayout> 

ACTUALIZACIÓN:

Aparentemente:

host.addTab(host.newTabSpec("advanced") 
     .setIndicator("Advanced", res.getDrawable(android.R.drawable.ic_menu_manage)) 
     .setContent(R.layout.advanced_tab)); 

No se necesita un archivo xml de diseño para su contenido. Debe ser:

host.addTab(host.newTabSpec("advanced") 
     .setIndicator("Advanced", res.getDrawable(android.R.drawable.ic_menu_manage)) 
     .setContent(R.id.advanced_tab_layout)); 

Dónde setContent toma un ID. Todavía tengo ese error, pero en el emulador, las pestañas realmente se muestran, ¡PERO SIN CONTENIDO!

+1

Cargar el código por favor. No veo ningún TextView en tu XML. tal vez los haya puesto en archivos 'basic_tab' o 'advanced_tab'. publicar el hombre completo! –

+0

Lo sentimos, verifique la actualización. –

+0

¿Alguien tiene alguna idea? –

Respuesta

1

Bueno, acabo de limpiar el proyecto y borré el archivo edit_task.xml y lo recreé. Funciona bien ahora.

5

La excepción que aparece es un error en el editor de diseño. Al ejecutar el código de diseño de Android, no estábamos inicializando correctamente la versión del SDK, lo que significaba que se ejecutaría algún código condicional de versión en el TabWidget (que falla porque no se está ejecutando realmente en la versión que cree). Estamos arreglando esto en ADT 10 (junto con varios otros renderizado/vista previa de temas para las pestañas.)

(This es el conjunto de cambios que se parece a la versión correcta para pasar al procesador)

Cuestiones relacionadas