4 Stimmen

Wie überlagert man eine Ansicht über eine Aktivität?

Gibt es eine Möglichkeit, eine Ansicht dynamisch über der Ansicht der aktuellen Aktivität hinzuzufügen? Dabei ist zu beachten, dass dies von einer anderen Klasse aus geschehen muss, die nur Zugriff auf den Kontext der Activity hat.

ex:

public class ActivityClass extends Activity
{
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        …       

        PopupClass popup = new PopupClass(this);
        popup.showPopup();
    }

}

public class PopupClass
{
    Context context;

    void Popup(Context ctx)
    {
        context = ctx;
    }

    void showPopup()
    {
        // Add a view on top of the current Activity.
    }
}

Gibt es eine Möglichkeit für PopupClass in der Lage sein, eine Ansicht auf die aktuelle Aktivität mit nur wissen den Kontext hinzufügen?

PopupClass weiß nichts anderes über die Activity und kann auch nicht die View an ActivityClass zurückgeben, damit ActivityClass sie hinzufügen kann.

4voto

Someone Somewhere Punkte 22958

1voto

Lior Ohana Punkte 3387

Ich verwende zu diesem Zweck relative Layouts. Ich denke, Sie können auch Frame-Layouts verwenden. Schauen Sie mal hier: http://www.learn-Android.com/2010/01/05/Android-layout-tutorial/5/

0voto

Squonk Punkte 48341

Warum nicht PopClass erweitern Activity und in der AndroidManifest.xml Attribute für die PopupClass Aktivität, setzen android:theme="@android:style/Theme.Dialog"

Dann könnten Sie in ActivityClass anstelle des Codes in dem gezeigten Beispiel...

Intent i = new Intent("PopupClass.class");
startActivityForResult(i);

Wenn die PopupClass-Aktivität beendet ist, kann sie die Rückgabedaten in einem anderen Intent einstellen und beenden.

Dann überschreiben Sie in der ActivityClass onActivityResult(...) und verarbeiten den zurückgegebenen Intent.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X