2017-02-17 6 views
1

이 코드에서 CustomAdapter & setArguments(bundle)getSupportFragmentManager()을 호출하여 다른 조각에 사용할 수 없습니다. 내 코드에서이 두 가지 방법을 해결할 수 없습니다. 어떻게 이러한 메소드를 호출 할 것인가? 좋은 말 할 사람이ArrayAdapter에서 getSupportFragmentManager()를 호출하는 방법

FragmentManager quote_fm = context.getSupportFragmentManager().beginTransaction(); 

또는

FragmentManager quote_fm = ((MainActivity)context).getSupportFragmentManager().beginTransaction(); 

시작하는 단편 필요한 코드처럼 나에게

import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
import java.util.ArrayList; 

public class CustomGridViewAdapter extends ArrayAdapter<CategoryPost> { 
    private Context context; 
    private int layoutResourceId; 
    private ArrayList<CategoryPost> data = new ArrayList<CategoryPost>(); 
    private Fragment getquoteFrag; 

    public CustomGridViewAdapter(Context context, int resource, ArrayList<CategoryPost> objects) { 
     super(context, resource, objects); 
     this.layoutResourceId = resource; 
     this.context = context; 
     this.data = objects; 
    } 

    static class ViewHolder { 
     TextView success, message, id, name; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     final ViewHolder holder; 
     if (convertView == null){ 
      holder = new ViewHolder(); 
      convertView = LayoutInflater.from(context).inflate(layoutResourceId, parent, false); 
      holder.id = (TextView)convertView.findViewById(R.id.tv_data_id); 
      holder.name = (TextView)convertView.findViewById(R.id.tv_name_id); 
      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     final CategoryPost post = data.get(position); 
     holder.name.setText(post.getName()); 
     holder.name.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Bundle bundle = new Bundle(); 
       getquoteFrag = new GetQuoteFragment(); 
       FragmentManager quote_fm = getSupportFragmentManager().beginTransaction();; 
       FragmentTransaction quote_ft = quote_fm.beginTransaction(); 
       bundle.putString("pos", String.valueOf(post.getId())); 
       quote_fm.setArguments(bundle); 
      } 
     }); 
     return convertView; 
    } 
} 
+0

'getSupportFragmentManager' 그래서 분명히 와나이 그것을 호출하는 경우이 클래스 – Selvin

+0

@Selvin의 인스턴스에 대한 참조가 필요 ... FragmentActivity''의 구성원 인 여전히 해결할 수 없습니다. –

+0

왜 어댑터에 필요합니까? – Avi

답변

4

시도 :

import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 
import java.util.ArrayList; 
public class CustomGridViewAdapter extends ArrayAdapter<CategoryPost> { 
    private Context context; 
    private int layoutResourceId; 
    private ArrayList<CategoryPost> data = new ArrayList<CategoryPost>(); 
    private Fragment getquoteFrag; 
    public CustomGridViewAdapter(Context context, int resource, ArrayList<CategoryPost> objects) { 
     super(context, resource, objects); 
     this.layoutResourceId = resource; 
     this.context = context; 
     this.data = objects; 
    } 
    static class ViewHolder 
    { 
     TextView success, message, id, name; 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     final ViewHolder holder; 
     if (convertView == null){ 
      holder = new ViewHolder(); 
      convertView = LayoutInflater.from(context).inflate(layoutResourceId, parent, false); 
      holder.id = (TextView)convertView.findViewById(R.id.tv_data_id); 
      holder.name = (TextView)convertView.findViewById(R.id.tv_name_id); 
      convertView.setTag(holder); 
     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     final CategoryPost post = data.get(position); 
     holder.name.setText(post.getName()); 
     holder.name.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Bundle bundle = new Bundle(); 
       getquoteFrag = new GetQuoteFragment(); 
       FragmentManager quote_fm = ((MainActivity)context).getSupportFragmentManager().beginTransaction();; 
       FragmentTransaction quote_ft = quote_fm.beginTransaction(); 
       bundle.putString("pos", String.valueOf(post.getId())); 
       getquoteFrag.setArguments(bundle); 
       quote_ft.replace(R.id.container,getquoteFrag) 
       quote_ft.commit(); 

      } 
     }); 
     return convertView; 
    } 
} 
+1

호환되지 않는 유형 'FragmentManager quote_fm = ((MainActivity) context) .getSupportFragmentManager(). 'quote_fm.setArguments (bundle);' –

+0

코드를 업데이트 할 수 없습니다. @Mukesh Prajapati –

+1

@MukeshPrajapati 조각 객체 getquoteFrag.setArguments (bundle)을 사용해야합니다. –

0

통화 무언가를 도우려고 아래에 quetion 질문에 대한

  Bundle bundle = new Bundle(); 
      getquoteFrag = new GetQuoteFragment(); 
      FragmentManager quote_fm = ((MainActivity)context).getSupportFragmentManager().beginTransaction();; 
      FragmentTransaction quote_ft = quote_fm.beginTransaction(); 
      bundle.putString("pos", String.valueOf(post.getId())); // you can also send this value as an integer type 
      getquoteFrag.setArguments(bundle); 
      quote_ft.replace(R.id.your_main_activity_container, getquoteFrag) 
      quote_ft.commit(); 

입니다 다른 조각에서 값을 얻는다. 전화하는 동안. 코드 아래

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     String post_id= getArguments().getString("pos"); 

     // you can also pass values in int type. 
     int pos = getArguments().getInt("pos"); 
    } 
} 
+0

나는 그것을 얻을 수 없다. 사실,'bundle.' 객체에'post.getId()'값을 저장하고 그 값을'GetQuoteFragment' 조각에 넣고 싶습니다. –

+0

다른 질문입니까? –

+0

아니요,하지만'FragmentManager quote_fm = ((GetQuoteFragment) context) .getSupportFragmentManager(). beginTransaction();'줄을 추가 한 후에도 여전히 해결할 수 없습니다. 그리고 나서이 메소드에서 번들 값을 가져오고 싶습니다.'quote_ft.setArguments (bundle);'. –