android download - per cosa è usato ids.xml?





wikipedia versioni (5)


Un'altra applicazione per id.xml riguarda i layout e i progetti di libreria. Supponiamo che tu specifichi un elenco generico di opzioni in un layout di una libreria (finestra di dialogo)

<CheckedTextView android:id="@+id/checked_option_one"...
<CheckedTextView android:id="@+id/checked_option_two"...
...

e gestire queste viste in un frammento generico (di una finestra di dialogo)

optionOneCheck = (CheckedTextView)rootView.findViewById(R.id.checked_option_one);
optionTwoCheck = (CheckedTextView)rootView.findViewById(R.id.checked_option_two);

Se si rimuove una qualsiasi delle dichiarazioni di visualizzazione da una copia del layout in un progetto principale, si otterrà un'eccezione di errore "no tale campo" in fase di esecuzione.

Il compilatore non si lamenta, ma in fase di esecuzione l'id non è effettivamente lì / conosciuto.

Dichiarando gli id ​​in id.xml e usando

<CheckedTextView android:id="@id/checked_option_one"...
...

evita l'errore di runtime

Solo una domanda veloce, qual è il ids.xml utilizzato per lo sviluppo di un'app per Android? Ho visto un esempio sulla pagina web delle risorse Android che conteneva:

<resources>
  <item name="snack" type="id"/>
</resources>

Per cosa sarebbe usato?




ids.xml ha il seguente vantaggio: tutti gli ID sono stati dichiarati, quindi il compilatore può riconoscerli. Se qualcosa del genere:

<TextView
    android:id="@+id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignBelow="@id/text2"
    android:text="...."/>
<TextView
    android:id="@+id/text2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="...."/>

Può comportare l'errore di compilazione perché text2 è stato riferito prima di essere dichiarato




Quando si creano viste in modo dinamico, la definizione di id in id.xml dà la possibilità di fare riferimento a una vista appena creata. Dopo aver utilizzato il setId(id) , puoi accedere alla vista come se fosse stata definita in XML. Questo post del blog ha un bell'esempio.




id.xml è generalmente usato per dichiarare gli id ​​che usi per le viste nei layout.

potresti usare qualcosa del genere

<TextView android:id="@id/snack">

per il tuo dato xml.




sul modulo: app (Gradle)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.namepack.nameappxxxxx"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

progetto: nameAppXXXX (Gradle)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

e modifica la tua attività di AppCompatActivity ad esempio Attività:

package com.namepack.nameappxxxxx;


import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class NameClass extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
    }


}




android