it-swarm.com.de

Wie kann ich zur Laufzeit eine Aktivität auf eine Aktivität setzen? Es funktioniert nicht, setTheme vor onCreate und setContentView aufzurufen

Ich möchte setTheme zu einer Aktivität zur Laufzeit. Ich habe einige Lösungen von Google gesucht. jemand sagte den Aufruf setTheme, bevor onCreate und setContentView funktionieren können, ähnlich wie der Codeabschnitt

public void onCreate(Bundle savedInstanceState) {
    setTheme(Android.R.style.Theme_Translucent_NoTitleBar);
    super.onCreate(savedInstanceState);
    ...
    setContentView(...)
}

aber es funktioniert nicht, ich möchte wissen, gibt es eine andere Lösung, die Theatre auf Aktivität setzen kann?

15
herman brain

Probieren Sie es einfach aus - setzen Sie Ihr Design nach super.onCreate(savedInstanceState); und vor setContentView(...)

Wie unten stehender Code -

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setTheme(Android.R.style.Theme_Translucent_NoTitleBar); // Set here
    setContentView(...)
}
14
Praveenkumar

Eigentlich hat das nur für mich funktioniert, wenn ich es vor dem Aufruf von super.onCreate(savedInstanceState); eingestellt habe.

public void onCreate(Bundle savedInstanceState)
{
    final int themeRes = getIntent().getIntExtra(EXTRA_THEME_ID, 0);
    if (themeRes != 0) setTheme(themeRes);
    super.onCreate(savedInstanceState);
    //ect...
}
6
Chris.Jenkins
setContentView(...);
setTheme(R.style.MyTheme);
setContentView(...);

Es muss gut funktionieren ..

Mehr zu Themen, Lesen Sie diese http://entertheinfinity.blogspot.in/2016/06/designing-Android-interface-themes.html

3
Umesh

So legen Sie das Design zur Laufzeit fest und beheben das Problem mit dem schwarzen Hintergrund:

  1. das Design sollte vor onCreate() festgelegt werden.

    public void onCreate(Bundle savedInstanceState) {
        setTheme(Android.R.style.Theme_Translucent_NoTitleBar);
        super.onCreate(savedInstanceState);
        ...
        setContentView(...)
    }
    
  2. das Thema der transparenten Aktivität im Android-Manifest sollte auf jedes Thema mit transparentem Hintergrund (z. B. Dialogthema) festgelegt werden.

    • dies bedeutet, dass das Android-Betriebssystem weiterhin die Aktivitäten hinter der transparenten Aktivität zeichnet, sodass Sie nicht mit einem schwarzen Hintergrund enden.

    • ich verwende eine AppCompatActivity; Ich muss ein AppCompat Theme verwenden:

      <?xml version="1.0" encoding="utf-8"?>
      <manifest
          xmlns:Android="http://schemas.Android.com/apk/res/Android"
          package="com.example.app">
          ...
          <application
              ...>
              ...
              <activity
                  Android:name=".TranslucentActivity"
                  Android:theme="@style/Theme.AppCompat.DayNight.Dialog"
                  .../>
              ...
          </application>
      </manifest>
      
0
Eric