2016-04-20 9 views
0

Hallo, ich bin neu in Android, habe ich Probleme beim Aufruf einer zweiten getActivty in einem zweiten Fragment. Ich habe einen ViewPager mit 2 Fragmenten, und ich möchte eine Recyclerview auf beiden aufrufen.Fehler beim Aufruf von getActivity im zweiten Fragment

Wenn ich rufe getActivity im ersten Fragment, das das recycleradapter Kontext, um es funktioniert gut

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); 

Aber wenn ich es im zweiten Fragment nennen stürzt

recyclerView.setHasFixedSize(true); 
    layoutManager = new GridLayoutManager(getActivity(),3); 
    recyclerView.setLayoutManager(layoutManager); 
    recyclerAdapter = new LivrosAdapter(livrosArray,getActivity()); 
    recyclerView.setAdapter(recyclerAdapter); 

Und gibt diesen Fehler

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) 

Jemand weiß, wie man das löst?

Dies ist der Code aus dem Adapter

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

Das Problem ist mit Ihrer 'LivrosAdapter' Klasse, fügen Sie diesen Code zu Ihrer Frage hinzu. –

+0

Wo rufen Sie die Methode getActivity() in Ihrem Fragment auf? – chaitanya

+0

Die Protokolle zeigen das Problem mit dieser Zeile - "recyclerAdapter = new LivrosAdapter (livrosArray, getActivity());' Bitte post 'LivrosAdapter' Code –

Antwort

-1

Sie Ihren Android-Simulator neu starten und Ihre Anwendung ausführen, dann ist es in Ordnung.

Verwandte Themen