2010-04-24 28 views
10

Piszę aplikację na Androida i chciałbym umieścić okno dialogowe lub widok na ekranie głównym, aby użytkownik mógł wprowadzać tekst bez wskakiwania do mojej pełnej aplikacji. Nie wydaje mi się, żeby to działało. Jeśli przedstawię okno dialogowe (nawet w przypadku przezroczystej aktywności), uruchomi się moja aplikacja.Jak oni to robią? Okno dialogowe na ekranie głównym

Jeśli nie wiesz, o czym mówię, spójrz na widżet Facebooka. Chcę powtórzyć podobne zachowanie do kliknięcia "Co myślisz?" pudełko.

Dzięki za pomoc z góry!

-Brian

+0

"Gdybym przedstawi okno (nawet w przejrzystej działalności), moi uruchamia aplikacji." Co to dla ciebie oznacza? Dla mnie "aplikacja" będzie * mieć * do uruchomienia, w przeciwnym razie twój kod nie będzie działał. – CommonsWare

Odpowiedz

10

Moim problemem było to, że aplikacja zawsze uruchomiony, aby wyświetlić okno dialogowe.

Aby rozwiązać ten problem, ustawiłem tryb aktywacji na singleInstance w manifeście. Teraz pokazuje okno dialogowe na ekranie głównym!

+0

Mimo że działa, powoduje to błąd w andoid 6 (tak, widziałem, że jest to odważne pytanie, ale google doent opiekuje się ...). Musisz użyć "documentLaunchMode", aby nie dopuścić do nadpisania własnej aplikacji w "Ostatnie ekrany" (szczególnie jeśli używasz również excludeFromRecents). – Remy

7

one rozpoczyna działalność, ale już ustawić motyw aktywności tak, że wygląda jak Dialog.

W swoim manifeście, trzeba dodać coś takiego pod <activity> tagu: android:theme="@android:style/Theme.Dialog"

+0

Dzięki, ale jak rozpocząć działanie z mojego widgetu aplikacji? Nie mogę się domyślić, jakie są intencje. Dzięki! –

3

Wielkie dzięki, Próbowałem z 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> 

Ale w moim kodu, nie ma 2 różne pływające okna: mój układ i kafelek. Tutaj jest następujący kod:

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(); 

    } 
} 

PS: Wiem, że to pytanie powinno być raczej niż odpowiedź

+4

dlaczego więc zamieściłeś go jako odpowiedź? –

+1

Może to zainteresować innych, którzy chcą zrobić okno dialogowe na ekranie głównym. –

0

skorzystać z usługi dla tej

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

Poniżej znajdują się 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"); 
} 

} 
Powiązane problemy