2015-01-18 2 views
1

recyclerview 항목을 클릭하여 Fragment를 여는 마지막보기 일을 시도하고 있습니다. 이 방법에서 getSupportFragmentManager은() 타입 SightsAdapter.ListItemViewHolderrecyclerview 항목을 클릭하여 Fragment를 엽니 다.

내가 스레드를 많이 읽을 수 있지만 그들이 나를 도울 수 없습니다 나는 안드로이드 절대적으로 새로 온 사람에 대한 정의되지 : 난 여전히 같은 오류가 받고 있어요. 누구나 내가 뭘 잘못하고 있는지 알 수 있습니까? 여기

내 코드입니다 : 주요

package com.example.stadtfuehrer; 



import java.util.ArrayList; 
import android.support.v7.widget.RecyclerView; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.view.LayoutInflater; 
import android.support.v4.app.*; 



public class SightsAdapter extends RecyclerView.Adapter<SightsAdapter.ListItemViewHolder> { 

private ArrayList<Sights> listData; 

public SightsAdapter(ArrayList<Sights> list){ 
    this.listData = list; 
} 

@Override 
public int getItemCount(){ 
    return listData.size(); 
} 

@Override 
public void onBindViewHolder(ListItemViewHolder holder, int position){ 
    Sights sight = listData.get(position); 
    holder.textViewSightsName.setText(sight.getName()); 

} 

@Override 
public ListItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType){ 
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem_recyclerview, parent, false); 
    //itemView.setPadding(10, 5, 10, 5); 
    return new ListItemViewHolder(itemView); 
} 



public static class ListItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
    public TextView textViewSightsName; 

    public ListItemViewHolder(View itemView){ 
     super(itemView); 
     textViewSightsName = (TextView) itemView.findViewById(R.id.name_listitem); 
     itemView.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v){ 
     getSupportFragmentManager().beginTransaction().replace(R.id.container,new FragmentSightDetailed()).commit(); 
     Toast.makeText(itemView.getContext(), "Item clicked. "+textViewSightsName.getText(), Toast.LENGTH_SHORT).show(); 

    } 

} 
} 
+0

를 해결 한 검색을 많이하면 getFragmentManager를 시도하면()? – Mann

+1

그리고 컨텍스트/활동을 전달하고 activity.getFragmentManager()를 시도 했습니까? – Mann

답변

7

MainActivity;

public ViewAdapter(Context context, List<Information> data,MainActivity ma) 
{ 
    inflater=LayoutInflater.from(context); 
    this.data=data; 
    this.context=context; 
    main=ma; 
} 
main.getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment1()).commit(); 

이 나를 위해 잘 작동, 바로 당신을 위해 도움이 될 수 Adapter.It의 매개 변수화 생성자에 MainActivity.this를 전달합니다.

+0

몇 가지 간단한 개조를 완료하고 나를 위해 일했습니다! 감사합니다 – Nischal

+0

고마워 젠장, 너 나 도왔다 !! –

2

FragmentOne -> RecyclerViewAdapter onClcik() -> FragmentTwo

내가이 문제

FragmentOne fragmentOne; 

public RecyclerViewAdapter(Context mContext, List<GetSetModel> list, FragmentOne fragmentOne) { 
this.mContext = mContext; 
this.list = list; 
this.fragmentOne = fragmentOne; 
} 

**Now in OnClick() method open New Fragment like this below** 

Fragment fragment = new FragmentTwo(); 
Bundle args = new Bundle(); 
args.putString("data", "This data has sent to FragmentTwo"); 
fragment.setArguments(args); 
FragmentTransaction transaction =  frgmentOne.getActivity().getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.frame_container, fragment); 
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
transaction.addToBackStack(null); 
transaction.commit(); 
+0

내 하루 친구를 구해 줬습니다. 감사! –

관련 문제