2016-06-29 13 views
0

Ich mache ein Modul mit allen meinen Anwendungen zu integrieren. In diesem Modul wird onCreate außer Kraft gesetzt, um Code auszuführen, den ich in all meinen Apps tue, wie zB SupportActionBar. In allen meinen Anwendungen habe ich mich daran gehalten, mein Symbolleistenelement idtoolbar beizubehalten. Ich möchte, dass die überschriebene Funktion darauf zugreift, ohne ihr tatsächlich die ID zu geben. Ich will nicht super.onCreate(savedInstanceState, R.id.toolbar) zu tun haben, aber super.onCreate(savedInstanceState, R.class) oder in Verbindung, und erhalten die Funktion die Variable auf seine eigene zu bekommen, wie:Android - Zugriff auf var in Klasse

// In custom parent class 
protected void onCreate(Bundle savedInstanceState, Class r) { 
    super.onCreate(savedInstanceState); 
    Toolbar t = findViewById(r.getClass("id").getInt("toolbar")); 
    setSupportActionBar(t); 
} 
// Main func 
// Extends class in which above function resides 
@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b, R.class); 
} 
+0

Haben Sie tatsächliche Beispielcode von dem, was Sie haben und bis jetzt versucht haben? Haben Sie auch grundlegende [Java-Tutorials/Dokumentationen] (https://www.google.com/search?q=official+java+documentation&oq=official+java+documentation&aqs=chrome..69i57j0l3.5638j0j4&sourceid=chrome&ie=) gelesen UTF-8 # q = lernen + Java)? Denn das wäre der erste Schritt beim Erstellen einer Android-Anwendung. – codeMagic

+0

können Sie mir sagen, was genau Sie tun möchten .... –

+0

Sprechen Sie über die generierte Ressourcenklasse R, aus der Sie wahrscheinlich R.id.tests_id oder über eine von Ihnen erstellte Klasse namens R, mit der Sie erstellt haben die Klasse foo und Methodenleiste? –

Antwort

0

In Parameter sollte Gegenstand der Ressourcen-Klasse sein. Also:

// In custom parent class (extends android.support.v7.app.AppCompatActivity) 
public void doStuff(Resources r) { 
Toolbar t = findViewById(r.getClass("id").getInt("toolbar")) 
setSupportActionBar(t); 
} 
// Main func 
// Extends class in which above function resides 
@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b); 
    doStuff(getResources()); //we have Resources 
} 

aber ich undestand nicht, was Zweck ist R als Methodenparameter zu senden. Es kann auf diese Weise gemacht werden:

// In custom parent class 
public void doStuff() { 
Toolbar t = findViewById(getResources().getClass("id").getInt("toolbar")) 
setSupportActionBar(t); 
} 
// Main func 
// Extends class in which above function resides 
@Override 
protected void onCreate(Bundle b) { 
    super.onCreate(b); 
    doStuff(); 
} 
+0

Die 'Resources' Klasse hat keine' getClass (String) 'Funktion (zumindest in Android 6.0). Dieser Code wird nicht kompiliert. –

+0

Ich habe auf AppCompatActivity überprüft und es funktioniert. Wenn App für ältere Androids erstellen, ist AppCompatActivity die beste Wahl. –

+0

Gereinigt & Upgrade auf Nougat (von M). Aber dieser Code funktioniert immer noch nicht! Ich benutze android.support.v7.app.AppCompatActivity (für diejenigen, die sich wundern) –

Verwandte Themen