Estou tentando mexer com o novo RecyclerView e sempre que tento executá-lo, meu aplicativo trava imediatamente. Isso me dá NullPointerException para tentar acessar métodos de android.support.v7.widget.RecyclerView
. Eu olhei para outros posts e vi que a maioria das pessoas não tinha, compile 'com.android.support:recyclerview-v7:+'
mas eu tentei e não ajudou em nada. Não tenho certeza do que fazer neste momento, qualquer ajuda seria apreciada. Aqui está o log de erros: (Eu postaria uma foto, mas ainda não tenho 10 repetições)
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int)' on a null object reference
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
at android.view.View.measure(View.java:17430)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
at android.view.View.measure(View.java:17430)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5786)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
onCreateView
que você remove / destrói / cancela o registro emonDestroyView
... Tenho que seguir esses ciclos de vida!Respostas:
Esse problema geralmente ocorre quando nenhum
LayoutManager
arquivo foi fornecido para oRecyclerView
. Você pode fazer assim:fonte
final
, é por isso que eu declareifinal
aqui.No meu caso, não estava conectado a 'final', mas ao problema mencionado no comentário de @ NemanjaKovačević à resposta de @aga. Eu estava configurando um layoutManager na carga de dados e essa foi a causa da mesma falha. Depois de mover a configuração do layoutManager para onCreateView do meu fragmento, o problema foi corrigido.
Algo assim:
fonte
LayoutManager
não foi fornecido , é isso. Você pode fazer com que a variável aponte para oLayoutManager
final ou não - isso não muda nada.Para mim, eu estava tendo o mesmo problema, o problema era que havia um RecyclerView não utilizado em xml sem visualização, mas não estou vinculando-o a nenhum adaptador em Activity, daí o problema. Foi resolvido assim que removi as visualizações não utilizadas do reciclador no xml
ou seja - eu removi esta visão porque ela não foi chamada no código ou qualquer adaptador foi configurado
fonte
Eu experimentei esta falha, embora eu tivesse o
RecyclerView.LayoutManager
ajuste correto. Tive que mover oRecyclerView
código de inicialização para oonViewCreated(...)
retorno de chamada para corrigir esse problema.fonte
RecyclerView
código de inicialização para oonViewCreated(...)
trabalhadoVocê precisa usar
setLayoutManager
noRecyclerView#onCreate()
método. Antes de adicionarrecyclerView
a uma vista, deve ter oLayoutManager
conjunto.fonte
Eu tenho esse problema devido à referência errada de
RecyclerView
id.para
fonte
Verifique com seu ID de visualização do reciclador, apontando para a visualização real do reciclador resolveu meu problema
fonte
Meu problema estava em meu lyout XML. Tenho um android: animateLayoutChanges definido como true e chamei notificarDataSetChanged () no adaptador do RecyclerView no código Java.
Então, acabei de remover android: animateLayoutChanges do meu layout e resolvi meu problema.
fonte
Eu tive esse problema ao usar a biblioteca Butterknife. Eu tinha:
Mas a versão correta é:
fonte
No Gradle, implemente esta biblioteca:
Em XML, menção como esta:
Em Fragment , usamos
recyclerView
assim:Na atividade , usamos
RecyclerView
assim:se precisar horizontal,
RecyclerView
faça o seguinte:se você quiser usar GridLayoutManager usando o
RecyclerView
seguinte:fonte
Eu estava usando uma injeção de dependência - ButterKnife e esse problema surgiu porque eu não tinha vinculado a visão.
Então, dentro de onCreate (), acabei de inserir esta linha:
Minha declaração RecyclerView com injeção de dependência:
fonte
Para aqueles que estão usando: implementação 'androidx.recyclerview: recyclerview: 1.1.0-beta05'
certifique-se de usar isso em seu layout xml
Também tive uma falha ao executar meu aplicativo abaixo da API 27. Aqui está um link para a mensagem
Originalmente, eu criei um estilo para alterar o tamanho da fonte do meu textview dentro do recyclerview é por isso que criei este código abaixo: (eu poderia apenas ter chamado @dimen ao alterar o tamanho da fonte com base nos tamanhos de tela)
Inside style.xml
e adicionei isso no meu tema
themes.xml
Depois de investigar, descobri que é isso que está causando o erro e, após remover o estilo, não estou mais tendo problemas.
Eu tentei todas as soluções possíveis que encontrei aqui no estouro de pilha e quase desisti disso, felizmente na minha curiosidade pensei por que não remover o estilo talvez isso cause o crash e então boom o crash acabou.
fonte
Como LinearLayoutManager é vertical por padrão, uma maneira mais fácil de fazer isso é:
recyclerView.setLayoutManager(new LinearLayoutManager(context));
Se você quiser mudar a orientação, pode usar este construtor:
fonte
Acho que o problema no seu
Adapter
. Certifique-se de que você voltouViewHolder
emonCreateViewHolder()
. Como abaixo:fonte
Para mim, o problema era com meu activity_main.xml (21) em que o recycleView não tinha um id.
activity_main.xml (21)
activity_main.xml
Funcionou quando adicionei um android: id = "@ + id / transac_recycler_view" ao activity_main.xml (21) recycleView
fonte
No meu caso, adicionei apenas a biblioteca butterknife e esqueci de adicionar annotationProcessor. Ao adicionar a linha abaixo ao build.gradle (módulo App), resolvi meu problema.
fonte
Recyclerview recylerview = findbyid (R.id.recyclerview) Pode ser que você tenha perdido
fonte
Tive um problema semelhante ao testar meu aplicativo no GenyMotion. Após reiniciar o aparelho no GenyMotion o problema foi resolvido
fonte
Enfrentei o mesmo problema porque tinha o RecyclerView em outro layout e não em activity_main.xml.
Ao pesquisar em alguns sites, encontrei algo e quis compartilhar aqui
Adicionar Id para incluir a tag em Activity_main.xml
<include id="includedRecyclerLayout" .... </include>
chame este layout antes de Pesquisar visualização por ID em MainActivity.java
`ConstraintLayout includedLayout = findViewById (R.id.inckudedRecyclerLayout);
RecyclerViewrecyclerview = includedLayout.findViewById (R.id.RECYCLER_VIEW_ID) `;
fonte
Se eu estiver onde você farei isso. onView (withId (android.R.id.list)). perform (RecyclerViewActions.scrollToPosition (3)); android.R.id.list altere-o para o id da lista e a posição será a sua posição dentro do array.
fonte
escrever código em onCreateView ()
RecyclerView recyVideo = view.findViewById (R.id.recyVideoFag);
escrever código em onCreate () RecyclerView recyVideo = findViewById (R.id.recyVideoFag);
fonte