Obtendo android.content.res.Resources $ NotFoundException: exceção mesmo quando o recurso está presente no android


90

Por favor, deixe-me saber onde estou errando para obter o erro.

Estou criando um aplicativo que tem uma de suas atividades apenas no modo paisagem. Então, adicionei o seguinte no arquivo AndroidManifest.xml

<activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity>

Eu criei uma pasta como

/ res / layout-land

e adicione um layout chamado see_today_landscape_layout nele.

e onCreate()eu adicionei o seguinte

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.see_today_landscape_layout);
....
}

Mas quando executo meu aplicativo, recebo o seguinte erro

02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.access$2400(ActivityThread.java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Looper.loop(Looper.java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.main(ActivityThread.java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invoke(Method.java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getValue(Resources.java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getLayout(Resources.java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Activity.setContentView(Activity.java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286):    ... 12 more

Cruzei o check in R.java e ele tem o recurso com o ID 7f03002b que a exceção está procurando e está presente aí ...

Limpei e reconstruí o projeto, digamos, 5 vezes, mas o problema ainda ocorre.

O estranho é que isso estava funcionando ontem e não está funcionando hoje. O código é o mesmo.


A que se refere o ID de recurso # 0x7f03002b? Você deve fornecer o conteúdo do see_today_landscape_layout.xmlarquivo.
a.ch.

sim, está se referindo a see_today_landscape_layout.xml de acordo com R.java
Nik


Tive este problema ao atualizar para usar compile 'com.android.support:appcompat-v7:23.4.0'se continuar com v7:22.2.0'ele funciona
stephen

Respostas:


36
  1. no eclipse, vá para Projeto> Limpar ...
  2. selecione seu projeto e pressione OK
  3. reinicie o aplicativo

se isso acontecer novamente, exclua o arquivo r.java. ele será gerado automaticamente.


2
como mencionei antes ... Limpei as pastas bin e gen e recompilei o aplicativo ... ainda não está funcionando ...
Nik

131
Se isso não resolveu o seu problema, por que recebeu a marca de seleção?
IcedDante

1
o que você faz se isso acontecer no app de lançamento?
Dia

220

Para minha condição, a causa estava tomando intparâmetro para TextView. Deixe-me mostrar um exemplo

int i = 5;
myTextView.setText(i);

obtém as informações de erro acima.

Isso pode ser corrigido convertendo intpara Stringeste

myTextView.setText(String.valueOf(i));

À medida que você escreve int, ele espera um recurso, não o texto que você está escrevendo. Portanto, tenha cuidado ao definir um intcomo Stringno Android.


Obrigado, funcionou, eu estava tentando fazer assim: num2.setText (lotteryCharacters.charAt (2)) ;, então mudei para num2.setText (String.valueOf (lotteryCharacters.charAt (2))); ... e funcionou!
TharakaNirmana

1
Eu me pergunto qual é a diferença entre valueOf (i) e "" + i?
peterb de

Totalmente inesperado, grande captura! Obrigado
gunjot singh

1
E sobre o código XAML, como posso definir o valor. Meu caso é deve definir o valor decimal para a propriedade em XAML
zquanghoangz

2
Obrigado, o motivo é que setText é um método sobrecarregado que aceita String e ID de recurso. Então você passa um int que procura o Id do recurso
abedfar

13

Já que você está definindo o layout explicitamente, você pode querer tentar colocá-lo na pasta / layout padrão, não em / layout-land, já que se deseja que o Android controle a rotação automaticamente para você.


1
Se o telefone estiver na visualização retrato, ele ficará na posição retrato; quando você girar o telefone, ele estará na paisagem. Você está tentando fazer sempre paisagem? Em seguida, o que você precisa fazer é definir a orientação da atividade para paisagem no arquivo de manifesto ou no código, consulte esta pergunta stackoverflow.com/questions/2150287/…
mbwasi

Fiz isso como mencionei na minha pergunta '<activity android: name = ". LandScapeImageActivity" android: screenOrientation = "landscape"> </activity>'
Nik

1
está faltando a parte configchanges <activity android: screenOrientation = "landscape" android: configChanges = "idance | keyboardHidden "android: name =" abcActivty "/>
mbwasi


2

Isso pode acontecer devido a um idioma diferente no telefone para o qual seu código não tem o ativo. Por exemplo, sua preferência.xml é colocada em xml-en e você está tentando executar seu aplicativo em um telefone com francês selecionado, o aplicativo irá travar.


Sempre crie pastas de ativos padrão e, em seguida, adicione pastas específicas de idioma ou orientação. Embora este possa ou não ser o caso aqui :)
Ahmad Ali Nasir

2

Recebi esse erro por outro motivo:

Eu tinha o arquivo res/xml/data.xmle estava tentando carregá-lo com uma Resourcesclasse assim:

Resources.getSystem().getXml(R.xml.data);

No entanto, isso está incorreto, pois o método Resources.getSystem()retorna um objeto global compartilhado de recursos que fornece acesso apenas aos recursos do sistema.

A maneira correta é a seguinte (de dentro da Activity):

this.getResources().getXml(R.xml.data);

Como acessar recursos de funções de nível superior ou classes que não herdam de Activity então?
Vivek Yadav

2

No meu caso, minha versão Build Tools em meu build.gradle para o módulo de app estava desatualizada em um projeto antigo. A atualização corrigiu o problema:

android {
    ...
    buildToolsVersion "19.0.1"
    ...

Atualizado para a última versão das ferramentas de compilação (25.0.1), sincronizei o projeto e tudo ficou bem novamente.


2

Verifique se suas importações estão corretas. Eu tive um problema semelhante onde Restava apontando para o Rarquivo de sistema Android , não o meu local.


1

Excluí pastas de buildum projeto. Depois de limpo e reconstruído no Android Studio. Em seguida, corrigiu os erros em build.gradle e AndroidManifest.


1

Isso também pode causar alguns problemas: acidentalmente, um dos meus layouts foi estacionado na pasta de recursos do meu tablet, então recebi este erro apenas com o layout do telefone. O layout do telefone simplesmente não tinha um arquivo de layout adequado.

Trabalhei novamente depois de mover o arquivo de layout para a pasta padrão correta e a seguinte reconstrução do projeto.


Você poderia fornecer mais informações sobre isso, stackoverflow.com/help/how-to-answer
Rich Benner

0

Certifique-se de que o R para o qual você está apontando seja o correto. Tive um problema muito semelhante a este, em que uma importação foi inserida pelo Eclipse que apontava para o arquivo System R ao invés do do projeto. Foi preciso coçar muito a cabeça. Espero que isto ajude.


0

Você tem a orientação da tela definida para paisagem em seu xml. Se você usou o eclipse para gerar este arquivo, ele teria criado em res / layout-land / folder. Mas quando você abrir a atividade no modo Retrato, o aplicativo pesquisará por xml em res / layout-port / folder ou res / layout / regular . Se você não tiver xml para o modo retrato, seu aplicativo irá travar.


0

Eu consertei desta forma:

Crie uma pasta em seu nome de diretório de recursos "drawable-nodpi"e, em seguida, mova todos os seus recursos neste diretório de outro diretório drawable.

Agora limpe seu projeto e reconstrua-o. Execute novamente, com sorte, desta vez funcionará sem nenhuma exceção de recurso não encontrado.


Isso me indicou o caminho certo, mas tenha em mente esta postagem: stackoverflow.com/questions/24682094/…
Adrian

0

Recebi este erro quando estava tentando acessar dados Bundle do One Intent usando getInt ("ID").

Resolvi usando getString ("ID").

Da Activity1 eu tive

Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)// 
startActivity(intent);

Na Atividade B,

Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int 
x=Integer.parseInt(extras.getString("Data")); // This solved the problem.
}

1
Atualize sua resposta para explicar como isso resolve o problema e melhora as respostas votadas e aceitas que esta pergunta de 5 anos já tem. Veja: Como escrevo uma boa resposta .
FluffyKitten

Considere adicionar alguns detalhes e explicações para apoiar sua resposta, de modo que seja útil para os outros
Souvik Ghosh

0

Para mim, a invalidação do cache e a reinicialização não funcionaram. Removi as pastas .idea e .gradle. Se você fizer isso, não se esqueça que coisas como criar logs ou algo assim pode desaparecer.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.