2014-06-05 3 views
8

Damals hatte MotoDev Studio (basierend auf Eclipse, veröffentlicht von Motorolla) eine Funktion, um Referenzen aus Ihrem XML in Ihren Code zu extrahieren. Standard-Eclipse mit dem ADT hatte diese Funktion nicht, aber fragte sich, ob es in Android Studio möglich ist.Kann Android Studio Referenzen aus einer Layout-XML-Datei automatisch in die Java-Aktivitätsdatei extrahieren?

So zum Beispiel gegeben XML:

<Button 
    android:id="@+id/my_button"> 

Es wäre in Ihrer Tätigkeit der Klasse erzeugen:

private Button mMyButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    mMyButton = (Button) findViewById(R.id.my_button); 
} 

Antwort

0

Sie Buttermesser überprüfen können. Es tut nicht genau was Sie wollen, aber es wird eine Menge Kesselplatte los. @zigis Lösung scheint alles zu importieren, was in der realen Welt nicht großartig ist!

4

Die Antwort ist ein qualifizierter „Ja“, mit Eibisch beginnen und zurück nach Lebkuchen mit seiner Kompatibilität Bibliothek zu gehen, Android jetzt data binding hat. Es extrahiert nicht die Referenzen als solche, aber es tut ziemlich genau das, was Sie wollen.

So, jetzt statt

<LinearLayout …> 
    <TextView android:id="@+id/name"/> 
    <TextView android:id="@+id/lastName"/> 
</LinearLayout> 

Wir haben

<LinearLayout …> 
    <TextView android:text="@{user.name}"/> 
    <TextView android:text="@{user.lastName}"/> 
</LinearLayout> 

Und statt mit diesem Java-Code mit Fremdkesselblech Code

private TextView mName 
protected void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.activity_main); 
    mName = (TextView) findViewById(R.id.name); 
    mLastName = (TextView) findViewById(R.id.lastName); 
} 
public void updateUI(User user) { 
    if (user == null) { 
    mName.setText(null); 
    mLastName.setText(null); 
    } else { 
    mName.setText(user.getName()); 
    mLastName.setText(user.getLastName()); 
    } 
} 

Wir haben jetzt (die eine geht Schritt über das, was Butterknife innerhalb seiner updateUI-Methode tut)

Und die Verbesserungen gehen noch darüber hinaus, so würde ich vorschlagen, dass Sie die folgenden presentation von den Google-Ingenieuren, George Mount und Yigit Boyar gegeben.

Es ist die Investition wert, durchzukommen. All dies wird zur Kompilierzeit durchgeführt, so dass keine Laufzeitnachteile entstehen. Und wie ich zu Beginn gesagt habe, ist es abwärtskompatibel bis Android 2.3, also gibt es wirklich keinen Grund, diese neue Funktionalität nicht zu verwenden.

7

Es gibt ein Plugin für Android Studio namens ButterKnifeZelezny, das die Funktion bietet, die Sie anfordern, aber nur, wenn Sie verwenden. Sie können auswählen, was Sie importieren möchten und so weiter.

ButterKnifeZelezny

+0

Schade, es ist derzeit nicht kompatibel mit AS 2.2.2 –

+0

Es ist gut, aber zu viel zu viel Code an der Spitze der oncreate Methode verwirrend, wenn 40 -50 Felder gibt es –

+0

@VishalPatel Wenn Sie alle zugreifen möchten Von diesen Feldern hast du keine andere Wahl. – skywall

Verwandte Themen