2011-03-22 18 views
19

He revisado el manifiesto de la aplicación y, en el iniciador de aplicaciones, ¿aparece como Nombre de la actividad en lugar de como nombre de la aplicación? Por qué es esto. Tengo otra aplicación donde, cuando la instalo, hay 5 entradas, una para cada actividad en la aplicación, cuando debería haber solo un nombre, el de la aplicación. Entonces, cuando voy a lanzarlo, tengo 5 aplicaciones con nombres idénticos en la lista de lanzamiento. Estos llevan el nombre de la aplicación, pero hay uno para cada actividad. ¿Cuál podría ser la razón de ésto?Nombre de la aplicación Android Aparece como Nombre de la actividad

+0

Esto parece extraño. Quiero decir, ¿por qué Android incluso debería permitir que aparezcan varias aplicaciones con el mismo nombre en la lista de lanzamiento de la aplicación? – Androider

+1

Pegue sus contenidos manifiestos. – tvkanters

+0

Uno de los problemas es que para las múltiples aplicaciones con el mismo nombre hay demasiadas actividades de categorías de laucher. – Androider

Respuesta

12

Para el primer número, usted debe ser consciente de que el nombre proviene del atributo android:label en la etiqueta de aplicación:

<application android:name="ApiDemosApplication" 
    android:label="@string/activity_sample_code" 
    android:icon="@drawable/app_sample_code"> 

Para la segunda cuestión, en el manifiesto, es probable que todas sus actividades especifican un filtro de intención con una acción de android.intent.category.Launcher. Por ejemplo:

<activity android:name="ApiDemos"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Si usted tiene este tipo de etiquetas de filtro intención de todas las actividades, se debe sacar las etiquetas de filtro intención de todo pero la actividad que desea lanzar en el arranque.

+1

Ok. Entonces, sin la etiqueta, elegirá el nombre para una actividad principal. – Androider

+0

Todavía parece que las entradas de los lanzadores deberían ser para la aplicación y no estar basadas en actividades en absoluto, pero este era el problema – Androider

+1

¿De verdad tengo una etiqueta de Android en el manifiesto que publiqué arriba? – Androider

2

Cuando crea una Actividad a través de Eclipse, la propiedad android: label dentro de su actividad se establece automáticamente en "@ string/your_activity_name" en AndroidManifest.xml. Al agregar el filtro de intención para proporcionar un iniciador para esta actividad, su iniciador obtiene la misma etiqueta que su etiqueta android: Actividades.

Si desea etiquetar el iniciador con el nombre de su aplicación, debe cambiar la etiqueta Actividades android: a algo así como "@ string/app_name".

36

La respuesta aceptada anterior es incorrecta. Dice,

el nombre proviene del atributo android: etiqueta de la etiqueta de la aplicación

eso no es verdad. Tome el siguiente código, por ejemplo.

<activity android:name="ApiDemos" android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

En este código, el nombre de la aplicación que se muestra en el lanzador se establece por el atributo android:label en la etiqueta de la etiqueta no activityapplication como dice la respuesta aceptada anteriormente.

para corregir la respuesta aceptada anteriormente, el nombre que aparece debajo del icono en el lanzador viene del atributo android:label en activity la etiqueta de la actividad de los puntos de entrada (la etiqueta de actividad que contiene los DEFAULT y LAUNCHER categorías) a menos que no se especifica allí, en cuyo caso proviene del atributo android:label en la etiqueta application.

Su primer problema se puede resolver cambiando el atributo android:label en la etiqueta de la actividad de su punto de entrada.

+3

Qué comportamiento tan extraño. Parece más lógico usar el nombre de actividad para la actividad y el nombre de la aplicación para el iniciador. ¿Ves algo de sentido trabajando así? –

+2

Es así que los desarrolladores de aplicaciones pueden tener más de un icono de iniciador (y la actividad de punto de entrada asociada) y pueden tener nombres separados para cada icono del iniciador. Puede hacer esto al incluir el siguiente código en más de una etiqueta de actividad en el manifiesto: ' ' y agregando' android: label = "@ string/app_name" 'a cada etiqueta de actividad. – Patrick

+2

@Patrick entonces, ¿cómo puedo poner etiquetas para la actividad de entrada separada del nombre de la aplicación? si estoy dispuesto a tener solo una actividad principal? –

5

Una forma de tener un nombre de aplicación diferente (el nombre que aparece debajo del icono de la aplicación) y un nombre diferente para la actividad que se inicia al tocar el icono de la aplicación es establecer explícitamente una cadena diferente en la actividad Método onCreate(), como este:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Do your thing 
    // ... bla bla bla 

    getActionBar().setTitle(R.string.activity_title); 
} 

Espero que esto ayude!

+1

Esta es la respuesta correcta. –

0

con Android versión 4.1.2 El nombre de la aplicación será "estática" con respecto a la etiqueta definida en la actividad de establecer como lanzador principal y no se reemplaza en ningún filtro intención

0

Como si desea colocar una vista de imagen en el lugar del título de la barra de herramientas. Tienes que actualizar la etiqueta de actividad particular en el manifiesto de Android como android:label=""; haciendo esto tu nombre de actividad no se mostrará en la barra de herramientas después de la vista de imagen y usa el siguiente código para configurar la vista de imagen junto con el ícono de navegación y sin barra de herramientas título.

try { 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    toolbar.setTitle(""); 
    if (getSupportActionBar() != null) 
     getSupportActionBar().setIcon(R.drawable.header_image_wt); 
} catch (Exception e) { 
    e.getMessage(); 
} 
Cuestiones relacionadas