2017-03-23 7 views
0

Ich habe eine Aktivität, die ich schon vor einiger Zeit implementiert habe.Aktiviere die Aktivität als Dialog

Es beinhaltet rund um einen In-App-Kauf, so dass die gesamte Logik relativ eigenständig ist. es muss sich um nichts anderes kümmern.

Jetzt möchte ich diese Aktivität optional in einem Dialog in einer anderen Aktivität angezeigt werden. Gibt es einen schnellen Weg, das zu tun? Ich muss jedoch weiterhin das alte Verhalten beibehalten, wobei die Aktivität als normaler Bildschirm angezeigt wird.

Also gibt es irgendwie, dass ich die Aktivität damit starten könnte, damit es als ein Dialog auftaucht?

Danke

Antwort

0

Sie können Aktivität nicht als Dialog anzeigen.

Optionen sind verfügbar:

1: mit einigen boolean Extras wie "Showdialog" die andere Aktivität öffnen, true

Intent intent = new Intent(this, OtherActivity.class); 
intent.putExtra("showDialog", true); 

und in der anderen Tätigkeit in (zum Beispiel) onCreate:

Boolean showDialog = getIntent().getExtras().getBoolean("showDialog"); 
if (showDialog) { 
    // Code to show dialog 
} 

2: Erstellen Sie ein DialogFragment und zeigen Sie es in Ihrer ursprünglichen Aktivität an. Dieser Brauch DialogFragment Sie auf beiden Aktivitäten können

https://guides.codepath.com/android/Using-DialogFragment

0

Wahrscheinlich ist Ihre sauberste Option je nachdem, wie komplex Ihre Aktivität ist, ein neues DialogFragment auf der Grundlage Ihrer aktuellen Aktivität zu erstellen.

Ein DialogFragment ist im Grunde ein Fragment, also hat es eine relativ ähnliche Reihe von Lebenszyklus-Callbacks zu Ihrer Aktivität, daher sollte es nicht allzu schwierig sein, sie als DialogFragment erneut zu bearbeiten.

Wenn das Framework für In-App-Käufe bestimmte Rückrufanforderungen mit einer Aktivität aufweist, müssen Sie dies berücksichtigen.

Eine andere separate Option wäre es, das Aussehen eines Dialogs zu verspotten, indem eine Aktivität erstellt wird, die transparent um den Rand des Hauptinhalts herum sein kann.

0

Füllen Sie einfach das Layout mit einem Klick auf onCreate Methode. WAS ICH EMPFEHLEN MÖCHTE IST versuchen Sie die Alarmbox und anstelle des normalen Layouts blähen Sie Ihr Aktivitätslayout auf. diese könnten

0

Der einfachste Weg, helfen, das zu tun ist, einen Dialog Thema auf die Aktivität anzuwenden:

<activity android:theme="@style/Theme.AppCompat.Dialog" /> 

Oder im Code:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setTheme(R.style.Theme_AppCompat_Dialog); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.test); 
} 

Sie Parameter anpassen des Themas kann in styles.xml, z dim enabled/disabled, klicke auf externes Verhalten.

Der entscheidende Punkt ist setTheme() vor super.onCreate() auszuführen, weil Theme unveränderlich ist, einmal festgelegt durch super.onCreate() es nicht später mutiert werden kann.

+0

Wie funktioniert das im Code? Ich kann kein XML dynamisch hinzufügen. – user1017674

+0

@ user1017674, aktualisiert. – azizbekian

Verwandte Themen