0
你好我是android新手,在調用第二個片段中的第二個getActivty時有問題。 我有一個viewPager與2片段,我想調用兩個回收站。在第二個片段中調用getActivity時出錯
當我打電話getActivity在第一個片段,以獲得recycleradapter情況下它的正常工作
recyclerView = (RecyclerView) view.findViewById(R.id.em_alta_recycler_view);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
recyclerAdapter = new EmAltaRecyclerAdapter(altaListaArray,getActivity());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(recyclerAdapter);
但是,當我把它在第二個片段崩潰
recyclerView.setHasFixedSize(true);
layoutManager = new GridLayoutManager(getActivity(),3);
recyclerView.setLayoutManager(layoutManager);
recyclerAdapter = new LivrosAdapter(livrosArray,getActivity());
recyclerView.setAdapter(recyclerAdapter);
並給出了此錯誤
04-20 17:44:17.804 24791-24791/com.nkallianz.smocci E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.nkallianz.smocci, PID: 24791
java.lang.NoSuchMethodError: No direct method <init>(Ljava/util/ArrayList;Landroid/content/Context;)V in class Lcom/nkallianz/smocci/adapters/LivrosAdapter; or its super classes (declaration of 'com.nkallianz.smocci.adapters.LivrosAdapter' appears in /data/data/com.nkallianz.smocci/files/instant-run/dex/slice-slice_1-classes.dex)
at com.nkallianz.smocci.fragments.ListasFragment.onCreateView(ListasFragment.java:65)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:608)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:551)
at com.nkallianz.smocci.tabs.SlidingTabLayout$TabClickListener.onClick(SlidingTabLayout.java:303)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
有人知道如何解決這個問題嗎?
這是從適配器
public class LivrosAdapter extends RecyclerView.Adapter<LivrosAdapter.LivrosViewHolder>{
Context ctx;
private ArrayList<Livros> livrosArray = new ArrayList<Livros>();
public LivrosAdapter(ArrayList<Livros> livrosArray, Context ctx) {
this.livrosArray = livrosArray;
this.ctx = ctx;
}
public void setLivros(ArrayList<Livros> altaListaArray){
this.livrosArray=altaListaArray;
notifyItemChanged(0, altaListaArray.size());
}
@Override
public LivrosViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_grid_menu,parent,false);
LivrosViewHolder livrosViewHolder = new LivrosViewHolder(view,ctx,livrosArray);
return livrosViewHolder;
}
@Override
public void onBindViewHolder(LivrosViewHolder holder, int position) {
Livros livros = livrosArray.get(position);
Picasso.with(holder.capa.getContext()).load(livros.getCapa()).into(holder.capa);
}
@Override
public int getItemCount() {
return livrosArray.size();
}
public static class LivrosViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private ImageView capa;
private ArrayList<Livros> livrosArray = new ArrayList<Livros>();
Context ctx;
public LivrosViewHolder(View itemView,Context ctx,ArrayList<Livros> livrosArray) {
super(itemView);
this.ctx = ctx;
this.livrosArray = livrosArray;
capa = (ImageView) itemView.findViewById(R.id.grid_row_pic);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
Livros livros = this.livrosArray.get(position);
Intent intent = new Intent(this.ctx, ObraDetalhesActivity.class);
intent.putExtra("id",livros.getId());
this.ctx.startActivity(intent);
}
}
}
問題在於你的'LivrosAdapter'類,將這個代碼添加到你的問題。 –
你在哪裏調用片段中的getActivity()方法? – chaitanya
日誌描述的問題是這條線 - 'recyclerAdapter =新的LivrosAdapter(livrosArray,getActivity());'請發佈'LivrosAdapter'代碼 –