2010-04-24 13 views
10

Escribo una aplicación de Android y me gustaría colocar un cuadro de diálogo o una vista sobre la pantalla de inicio para que un usuario pueda ingresar texto sin saltar a mi aplicación completa. Parece que no puedo hacer que esto funcione. Si presento un cuadro de diálogo (incluso en una actividad transparente), se inicia mi aplicación.¿Cómo lo hacen? Diálogos en la pantalla de inicio

Si no sabe de lo que estoy hablando, eche un vistazo al widget de Facebook. Quiero replicar un comportamiento similar al de hacer clic en "¿Qué tienes en mente?" caja.

¡Gracias por cualquier ayuda con anticipación!

-Brian

+0

"Si presento un cuadro de diálogo (incluso en una actividad transparente), mis inicia la aplicación." ¿Qué significa esto para usted? Para mí, una "aplicación" va a * tener * para iniciarse, de lo contrario su código no se ejecutará. – CommonsWare

Respuesta

10

Mi problema era que la aplicación siempre puso en marcha para mostrar el diálogo.

Para resolver esto, configuré el modo lauch de actividad en singleInstance en el manifiesto. ¡Ahora muestra el diálogo sobre la pantalla de inicio!

+0

Altought está funcionando, hace errores en andoid 6 (sí, vi que es una pregunta audaz, pero Google no importa ...). Debe usar 'documentLaunchMode' para evitar que se sobreponga a su propia aplicación en las "Pantallas recientes" (especialmente si también usa excludeFromRecents). – Remy

7

Ellos son el lanzamiento de una actividad, pero han establecido el tema de la actividad para que se vea como un diálogo.

En su manifiesto, hay que añadir algo como esto bajo la etiqueta de <activity>: android:theme="@android:style/Theme.Dialog"

+0

Gracias, pero ¿cómo empiezo una actividad desde el widget de mi aplicación? Parece que no puedo entender intenciones pendientes. ¡Gracias! –

3

Muchas gracias, he intentado con Theme.Dialog

<activity android:name=".language" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Dialog"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    </activity> 

Pero en mi código, hay 2 diferentes ventanas flotantes: mi diseño y el mosaico. Aquí está el código siguiente:

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.app.Dialog; 

public class language extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.main); 
     Dialog dialog = new Dialog(this); 
     dialog.setContentView(R.layout.main); 
     dialog.setTitle("Raygional"); 
     dialog.show(); 

    } 
} 

PD: Sé que esto debe ser una pregunta en lugar de una respuesta

+4

¿por qué lo publicaste como respuesta? –

+1

Puede interesar a otros que quieran hacer un Diálogo sobre la pantalla de inicio. –

0

uso de servicio para que

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
this.getApplicationContext().startActivity(intent); 

aparece a continuación encontrará code`

public class HomepopupDataService extends Service { 

private static final String TAG = "HomepopupDataService"; 

@Override 
public void onCreate() { 
    Log.i(TAG, "Service onCreate"); 
} 


@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 
    Log.i(TAG, "Service onStartCommand"); 

    CountDownTimer dlgCountDown; 
    Log.e("---------------", "onHandleIntent"); 
    dlgCountDown = new CountDownTimer(10000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      Log.e("---------------", "onHandleIntent++"); 
     } 

     public void onFinish() { 
      Intent i = new Intent(getApplicationContext(), 
        DialogActivity.class); 

      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      getApplicationContext().startActivity(i); 
     } 
    }.start(); 
    return super.onStartCommand(intent, flags, startId); 
} 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    Log.i(TAG, "Service onBind"); 
    return null; 
} 

@Override 
public void onDestroy() { 
    Log.i(TAG, "Service onDestroy"); 
} 

} 
Cuestiones relacionadas