2016-04-20 32 views
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); 



    } 
} 

}

+0

問題在於你的'LivrosAdapter'類,將這個代碼添加到你的問題。 –

+0

你在哪裏調用片段中的getActivity()方法? – chaitanya

+0

日誌描述的問題是這條線 - 'recyclerAdapter =新的LivrosAdapter(livrosArray,getActivity());'請發佈'LivrosAdapter'代碼 –

回答

-1

您可以重新啓動你的Android模擬器,並運行你的應用程序的代碼,那麼它是確定。

相關問題