2017-06-13 8 views
1

私は活動を持っており、この活動はdrawableメニューです。 drawableの中に、私はいくつかの断片を含んでいます。私の断片では、アダプタでいくつかのデータを示しています。私はデータがクリックされたときに行動しようとすると、それは他の断片に行きます。ああ、私はフラグメントに私のアダプタからいくつかの値を送信しようとします。 私アダントからフラグメントに行く

を助けてください、これは...

package com.skripsi.anna.adapter; 

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import com.skripsi.anna.MenuEdit; 
import com.skripsi.anna.R; 
import com.skripsi.anna.model.ModelMenu; 

import java.util.List; 

/** 
* Created by gandhi on 6/11/17. 
*/ 

public class BarangEditor extends RecyclerView.Adapter<BarangEditor.ViewHolder> { 

private List<ModelMenu> modelMenus; 
private Context context; 

public BarangEditor(List<ModelMenu> modelMenus){ 
    this.modelMenus = modelMenus; 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 
    public TextView namaBarang,hargaBarang; 
    public ViewHolder(View v) { 
     super(v); 
     namaBarang = (TextView) v.findViewById(R.id.nama_barang); 
     hargaBarang = (TextView) v.findViewById(R.id.harga); 
     v.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int position = getAdapterPosition(); 
       ModelMenu modelMenu = modelMenus.get(position); 
       MenuEdit menuEdit = new MenuEdit(); 
       menuEdit.newInstance(modelMenu.getIdMenu(),modelMenu.getNamaMenu(),modelMenu.getHargaMenu()); 
// i want to send this value to fragment 

      } 
     }); 
    } 
} 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_barang_editor, parent, false); 
    ViewHolder vh = new ViewHolder(v); 
    return vh; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    ModelMenu modelMenu = modelMenus.get(position); 
    holder.hargaBarang.setText(modelMenu.getHargaMenu()); 
    holder.namaBarang.setText(modelMenu.getNamaMenu()); 

} 

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



} 

私のアダプタであり、それは私がこの

FragmentTransaction ft = ((AppCompatActivity) context).getSupportFragmentManager().beginTransaction(); 

を試してきたが、それは私のアプリのFCを作る

package com.skripsi.anna; 

import android.content.Context; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 


public class MenuEdit extends Fragment { 


private String idMenu,namaMenu,hargaMenu; 

private OnFragmentInteractionListener mListener; 

public MenuEdit() { 
} 
public static MenuEdit newInstance(String idMenu, String namaMenu, String hargaMenu) { 
    MenuEdit fragment = new MenuEdit(); 
    Bundle args = new Bundle(); 
    args.putString("idMenu", idMenu); 
    args.putString("namaMenu", namaMenu); 
    args.putString("hargaMenu",hargaMenu); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     idMenu = getArguments().getString("idMenu"); 
     namaMenu = getArguments().getString("namaMenu"); 
     hargaMenu = getArguments().getString("hargaMenu"); 
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_menu_edit, container, false); 


    return view; 
} 

public void onButtonPressed(Uri uri) { 
    if (mListener != null) { 
     mListener.onFragmentInteraction(uri); 
    } 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    mListener = null; 
} 
public interface OnFragmentInteractionListener { 
    void onFragmentInteraction(Uri uri); 
} 
} 

私の断片であります 作品ではありません

+0

また、アプリがクラッシュした後、logcatエラーを投稿してください。 – DaveNOTDavid

答えて

1

このコードを使用して、私と私はあなたのための作業を願っています

public void addFragment(Fragment fragment, boolean addToBackStack, String tag) 
{ 
    FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction ft = manager.beginTransaction(); 

    if (addToBackStack) 
    { 
     ft.addToBackStack(tag); 
    } 
    ft.replace(R.id.content_frame, fragment, tag); 
    try{ 
     ft.commitAllowingStateLoss(); 
    }catch (Exception e){ 

    } 
} 
+0

私はこのコードを@peyman –

+0

@GandhiWibowoあなたの活動に入れなければなりません... –

+0

とあなたの断片はこれを書いています... your_activity =(YourActivity)getActivity(); your_activity.addFragment(new MenuEdit()、false、 "MENU_EDIT_FRAGMENT"); –

0

[SOLVED]

ので、私は

FragmentManager fragmentManager = getSupportFragmentManager(); 
fragmentManager.beginTransaction().replace(R.id.flContent, menuEdit).commit(); 

私のアダプタにこのコードを入れてみたが、それはカントの決意getSupportFragment を言いますその本当の問題です。解決策として、私はこのようなコードを書いています。

AppCompatActivity activity = (AppCompatActivity) v.getContext(); 
activity.getSupportFragmentManager().beginTransaction().replace(R.id.flContent, menuEdit).addToBackStack(null).commit(); 

とその作業 その私の完全なアダプター今

package com.skripsi.anna.adapter; 

import android.os.Bundle; 
import android.support.v4.app.FragmentController; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import com.skripsi.anna.MenuEdit; 
import com.skripsi.anna.R; 
import com.skripsi.anna.model.ModelMenu; 

import java.util.List; 

/** 
* Created by gandhi on 6/11/17. 
*/ 

public class BarangEditor extends RecyclerView.Adapter<BarangEditor.ViewHolder> { 

private List<ModelMenu> modelMenus; 

public BarangEditor(List<ModelMenu> modelMenus){ 
    this.modelMenus = modelMenus; 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 
    public TextView namaBarang,hargaBarang; 
    public ViewHolder(View v) { 
     super(v); 
     namaBarang = (TextView) v.findViewById(R.id.nama_barang); 
     hargaBarang = (TextView) v.findViewById(R.id.harga); 
     v.setOnClickListener(new View.OnClickListener() { 
      public FragmentController appCompatActivity; 

      @Override 
      public void onClick(View v) { 
       int position = getAdapterPosition(); 
       ModelMenu modelMenu = modelMenus.get(position); 
       MenuEdit menuEdit = new MenuEdit(); 
       Bundle bundle = new Bundle(); 
       bundle.putString("idMenu",modelMenu.getIdMenu()); 
       menuEdit.setArguments(bundle); 
       AppCompatActivity activity = (AppCompatActivity) v.getContext(); 
       activity.getSupportFragmentManager().beginTransaction().replace(R.id.flContent, menuEdit).addToBackStack(null).commit(); 
      } 
     }); 
    } 
} 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_barang_editor, parent, false); 
    ViewHolder vh = new ViewHolder(v); 
    return vh; 
} 
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    ModelMenu modelMenu = modelMenus.get(position); 
    holder.hargaBarang.setText(modelMenu.getHargaMenu()); 
    holder.namaBarang.setText(modelMenu.getNamaMenu()); 

} 

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



} 
関連する問題