2016-07-18 14 views
0

In meiner App würde ich eine einzigartige Symbolleiste für alle Aktivitäten außer mainActivity machen. Ich habe diesen Code für Set-Titel und Logo schreiben, aber in der Symbolleiste habe ich auch Benutzername Benutzer nur angemeldet. So I'have schreibt in meiner Armaturenbrett Aktivität dieses Code:Symbolleiste für alle Aktivitäten festlegen

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(myToolbar); 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 
    assert myToolbar != null; 
    myToolbar.setLogo(R.mipmap.logo_big); 

TextView usernameField = (TextView) findViewById(R.id.username); 
    try { 
     usernameField.setText(User.getInstance().getUsername()); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

Und ich habe ein Layout, das in alle XML-Datei enthalten ist. Aber wie kann ich diesen Code in allen meinen Aktivitäten ohne Kopieren und Einfügen wiederverwenden?

Es ist falsch, ein Singleton zu machen? oder Nutzungsklasse?

dank

Antwort

3

Sie könnten eine Basis Aktivität erstellen, die den gemeinsamen Code ausgeführt und haben alle anderen Aktivitäten erben von ihm:

// the base class 
public abstract class BaseActivity extends AppCompatActivity 
{ 
    protected final void onCreate(Bundle savedInstanceState, int layoutId) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(layoutId); 

     Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
     setSupportActionBar(myToolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     assert myToolbar != null; 
     myToolbar.setLogo(R.mipmap.logo_big); 

     TextView usernameField = (TextView) findViewById(R.id.username); 
     try { 
      usernameField.setText(User.getInstance().getUsername()); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

// inheriting activity 
public class SomeActivity extends BaseActivity 
{ 
    protected final void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState, R.layout.some_layout); 
    } 
} 
+0

Thank you !! Fantastisch! es funktioniert! – LorenzoBerti

1

halten Sie Ihren Code in einer CustomActivity.

Wo jede Anforderung in Ihrer Anwendung CustomActivity erweitert.

Beispiel:

CustomActivity extends Activity{ 
// your toolbar code 
} 

In Ihrer aller Aktivitäten erstreckt CustomActivity.

0

Sie mögen dies tun können:

class BaseActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   
    } 

    public void initToolbar(int toolbarId) 
    { 
     Toolbar myToolbar = (Toolbar) findViewById(toolbarId); 
     setSupportActionBar(myToolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     assert myToolbar != null; 
     myToolbar.setLogo(R.mipmap.logo_big); 
    } 
} 

class YourActivity extends BaseActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(your activity layout); 

      initToolbar(R.id.yourToolbarId); 
    } 
} 
Verwandte Themen