2010-03-20 18 views
15

Così ho copiato questo esempio di esempio tutorial dal sito Android di Google e ho ottenuto un errore che R.id non può essere risolto.R.id non può essere risolto

Ecco il mio file Java

package com.TestApp.HelloWebView; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class HelloWebView extends Activity { 
    WebView mWebView; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.google.com"); 
    } 

} 

Ecco il mio res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?> 

<WebView android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 

risposta

22

Devi importare la classe R

import com.TestApp.HelloWebView.R; 

anche in quanto la domanda postato è necessario utilizzare uno spazio dei nomi per il layout.

?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 
+4

A partire dal nuovo SDK Android, non è necessario importare in modo esplicito com.TestApp.R. Eclipse lo risolve automaticamente. –

10

Se si utilizza Eclipse, eseguire una generazione pulita (Project/Clean...); questo può spesso risolvere problemi con le risorse che non vengono compilate correttamente.

1

Andare nel file main.xml, eliminare un carattere e riscriverlo. Questo genererà di nuovo il file R.

0

se hai pubblicato in modo completo il file main.xml, quindi non è corretto. È necessario scrivere uno spazio dei nomi di xml:

xmlns: Android = "http://schemas.android.com/apk/res/android"

ad esempio:

<?xml version="1.0" encoding="utf-8"?> 

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/label" 
    android:layout_width="78dip" 
    android:layout_height="65dip" 
    android:paddingTop="4dip" 
    android:textSize="12dip" 
    android:singleLine="true" 
    android:ellipsize="end" 
    android:textColor="@color/bright_text_dark_focused" 
    android:gravity="center_horizontal|center_vertical" /> 
1

assicurarsi di non avere alcun file xml con maiuscole nel nome.

Ho avuto lo stesso problema.

tutti i nomi di file in res (e tutte le relative sottocartelle compreso il layout) devono essere solo in minuscolo. Ciò include file di immagine, file xml, ecc. (Anche se non sono referenziati all'interno del progetto.)

12

Ho avuto lo stesso problema quando ho aggiornato il mio SDK Android. All'improvviso nuovi progetti non sono riusciti a generare il file R.java.

  • importazione mia R.java non ha aiutato, perché non è stato generato
  • pulizia e la costruzione del progetto non aiutano - la cartella/gen era ancora vuota.

Ho trovato che dopo l'aggiornamento, il server adb non si avviava correttamente. Quindi un manuale è iniziato:

$ cd $ANDROID_SDK/platform-tools 
$ adb start-server 

Poi ho riavviato Eclipse e ha fatto un pulito/costruire sul progetto, che ha generato il file R.java.

+0

Sì, l'ho risolto per me. –

+0

super buono. –

+0

@pestrella Ho provato a digitare il codice su cmd ma dice $ non è riconosciuto .. lo sto facendo proprio sul cmd? o questo non è per cmd ..? – Raf

0

Sì un'altra correzione Ho avviato l'emulatore. Eseguendo un programma helloandroid, questo è stato compilato. E uscito dall'eclispe e rientrato non so quale ha risolto il problema ..

Pulire il progetto ecc non l'ha risolto - posso avere 2 ore della mia vita indietro!

1

Durante il tentativo di un tutor per principianti Android (http://mobile.tutsplus.com/tutorials/android/android-sdk-development/) l'errore "R.id non può essere risolto" mi ha bloccato anche. Nel mio caso era un androide: onClick in /res/layout/main.xml. Sembra che onClick non sia supportato nella piattaforma AVD 1.5 Livello API 3.

Una modifica a un nuovo AVD con piattaforma 1.6 API, livello 6 ha rimosso l'errore - anche avviato il progetto da zero con le nuove impostazioni di api e livello. Per i neofiti di Eclipse assoluti (come me) creare un nuovo AVD con:

Finestra -> Android SDK e AVD Manager -> Nuovo. Seleziona la piattaforma, il numero del livello dall'elenco a discesa "Target".

1

Prova anche a eliminare ~ .android \ debug.keystore (mi è successo, pensavo fosse dovuto al problema di R.id). Il vero problema era che debug.keystore era più vecchio di un anno!

-1

Ho avuto lo stesso problema, ma è stato riparato

non so esattamente come questo problema andando risolvere

Basta provare, potrebbe essere utile

aggiungere questo codice nella parte superiore del codice ur

import com.MyFirstApp.activities.R; 

qui com.MyFirstApp.activties è il mio nome componente sostituirlo con il nome del componente

+0

Questo non sembra aggiungere nulla alla risposta accettata. – joran

1

Mi sono imbattuto in questo problema quando ho provato a seguire il tutorial di sviluppo di Lars Vogel per Android ... il mio problema è dovuto al fatto che non ho salvato il file di layout. Una volta salvato il file, funziona perfettamente.

+0

Sì, anch'io sono nel club Dufus. :) –

0

importazione com.TestApp.R; non è accettato una volta che R è perso.

My Eclipse ora crea automaticamente una nuova cartella "res" ogni volta che "pulisco". Sì, ho due cartelle denominate "res" in parallelo direttamente nella cartella del mio progetto. L'auto creata è vuota. I valori di stringa sono ancora trovati. Nessun altro errore di "R non può essere risolto" viene segnalato da Eclipse.

2

Ho avuto anche questo problema. Non posso dire una soluzione in generale, ma puoi creare un nuovo posto di lavoro e copiare l'hardcode. In futuro non fare mai clic su clean o build, invece salvare o avviare nuovamente eclipse.

0

Eureka! Sono riuscito a rendere il mio primo progetto Android importato in Eclipse!

In precedenza avevo sempre "Impossibile trovare la libreria di sistema" sotto Proprietà del progetto - percorso di generazione Java - scheda Librerie ed era impossibile correggerlo una volta verificato. La conseguenza era che nessuna dichiarazione di importazione poteva essere risolta da qualcosa importato.

In questo caso, ho modificato il livello di conformità JDK da 1.6 a 1.5 PRIMA di Ho importato (in seguito è troppo tardi e non può essere riparato). Deve essere fatto da Window - Preferences - Java - Compiler (in precedenza pensavo che questa opzione fosse disponibile solo facendo clic con il tasto destro del mouse su un progetto già importato). Quindi fai clic con il tasto destro del mouse su ciascun progetto e imposta Proprietà - Android su un Target adatto (con gli errori sopra, eclipse ignora qualsiasi selezione qui). Quindi, potrei persino tornare al livello di conformità JDK 1.6.

Quindi, in generale, la modifica del livello di conformità JDK prima dell'importazione potrebbe essere di aiuto.

E quando si elimina un progetto SEMPRE selezionare la casella di controllo "Elimina contenuto del progetto su disco (non può essere annullato)" nella finestra di dialogo "Sei sicuro". Altrimenti è impossibile reimportare il progetto, o se lo hai importato con il livello di conformità JDK sbagliato la prima volta, è impossibile correggere l'errore, se non quello di provare in un altro spazio di lavoro.

Queste sono le esperienze di un utente Eclipse molto frustrato.

0

Assicurarsi che non ci sia un errore nascosto in uno dei file .xml.
A volte è possibile eliminare un'istruzione nel file strings.xml che è importante.

Ad esempio, nell'esempio Vogella, ho ottenuto l'errore:

Errore: Nessun risorsa trovato che corrisponde al nome dato (a 'titolo' con valore '@ stringa/menu_settings').

avevo cancellato la linea:

<string name="menu_settings">Settings</string> 

Mettendo questo nel o l'eliminazione res/menu/main.xml avrebbe risolto l'errore.

Problemi correlati