Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法从适配器转到片段_Java_Android_Android Fragments - Fatal编程技术网

Java 无法从适配器转到片段

Java 无法从适配器转到片段,java,android,android-fragments,Java,Android,Android Fragments,我有活动,这个活动是可绘制的菜单。 在drawable中,我包含了一些片段,在片段中我用适配器显示了一些数据。我尝试在单击数据时执行操作,然后它将转到其他片段。哦,是的,我试着从适配器发送一些值到片段。 请帮帮我 这是我的适配器 package com.skripsi.anna.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.L

我有活动,这个活动是可绘制的菜单。 在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
这是行不通的

我使用这个代码,我希望能为你工作

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

    }
}
[已解决]

我尝试将此代码放在适配器上

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



}
package com.skripsi.anna.adapter;
导入android.os.Bundle;
导入android.support.v4.app.FragmentController;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.TextView;
导入com.skripsi.anna.MenuEdit;
导入com.skripsi.anna.R;
导入com.skripsi.anna.model.model菜单;
导入java.util.List;
/**
*由甘地于2017年6月11日创作。
*/
公共类BarangEditor扩展了RecyclerView.Adapter{
私有列表菜单;
公共工具栏编辑器(列表模式菜单){
this.modelmones=modelmones;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图namaBarang,hargaBarang;
公共视图持有者(视图v){
超级(五);
namaBarang=(文本视图)v.findViewById(R.id.nama_barang);
哈格巴朗=(文本视图)v.findviewbyd(R.id.harga);
v、 setOnClickListener(新视图。OnClickListener(){
公共碎片活动;
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
ModelMenu ModelMenu=modelMenus.get(位置);
MenuEdit MenuEdit=新建MenuEdit();
Bundle=新Bundle();
bundle.putString(“idMenu”,modelMenu.getIdMenu());
menuEdit.setArguments(bundle);
AppCompatActivity活动=(AppCompatActivity)v.getContext();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.flContent,menuEdit).addToBackStack(null.commit();
}
});
}
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.item\u barang\u编辑器,parent,false);
视窗支架vh=新视窗支架(v);
返回vh;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
ModelMenu ModelMenu=modelMenus.get(位置);
holder.hargaBarang.setText(modelMenu.getHargaMenu());
holder.namaBarang.setText(modelMenu.getNamaMenu());
}
@凌驾
public int getItemCount(){
返回modelmones.size();
}
}

请在应用程序崩溃后发布logcat错误。并在您的片段中写入以下内容。。。你的活动=(你的活动)getActivity();您的_activity.addFragment(new MenuEdit(),false,“菜单编辑_片段”);我已经尝试过了,但我将第一个代码放在我的活动中,将第二个代码放在我的recycleview适配器中,它的“不做任何事情”,然后我尝试将.commit()添加到第一个代码中,它的FC并显示此错误java.lang.IllegalStateException:活动已被销毁您可以尝试将第一个代码放在片段或适配器中吗?
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();
}



}