Android 在片段中使用改型获取数据

Android 在片段中使用改型获取数据,android,fragment,onclicklistener,Android,Fragment,Onclicklistener,这是我的适配器类中的代码,我想在单击某个项时打开一个片段,片段中的数据必须根据单击的项获取 我有一个Recycler视图,它包含一个订单列表,假设有3个订单,发票号分别为1、2、3。我希望通过单击项目打开订单,并在片段中获取该单击项目的数据。必须根据该发票号或该项目获取该订单,因为我仅使用一个片段获取feched数据 有什么建议吗 谢谢大家! 如果您正在将数据活动发送到片段: *holder.itemView.setOnClickListener(new View.OnClickListener

这是我的适配器类中的代码,我想在单击某个项时打开一个片段,片段中的数据必须根据单击的项获取

我有一个Recycler视图,它包含一个订单列表,假设有3个订单,发票号分别为1、2、3。我希望通过单击项目打开订单,并在片段中获取该单击项目的数据。必须根据该发票号或该项目获取该订单,因为我仅使用一个片段获取feched数据

有什么建议吗


谢谢大家!

如果您正在将数据活动发送到片段

*holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // transaction to the targeted fragment from current fragment
            AppCompatActivity activity = (AppCompatActivity) view.getContext();
            Fragment myFragment = new open_order();
            activity.getSupportFragmentManager().beginTransaction().replace(R.id.view_order_frag, myFragment).addToBackStack(null).commit();         
        }
    });*
Bundle bundle = new Bundle();
bundle.putString("KEY", "VALUE");
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);    // set Fragmentclass Arguments
将数据放入片段时:

*holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // transaction to the targeted fragment from current fragment
            AppCompatActivity activity = (AppCompatActivity) view.getContext();
            Fragment myFragment = new open_order();
            activity.getSupportFragmentManager().beginTransaction().replace(R.id.view_order_frag, myFragment).addToBackStack(null).commit();         
        }
    });*
Bundle bundle = new Bundle();
bundle.putString("KEY", "VALUE");
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);    // set Fragmentclass Arguments

如果您正在将数据活动发送到片段

*holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // transaction to the targeted fragment from current fragment
            AppCompatActivity activity = (AppCompatActivity) view.getContext();
            Fragment myFragment = new open_order();
            activity.getSupportFragmentManager().beginTransaction().replace(R.id.view_order_frag, myFragment).addToBackStack(null).commit();         
        }
    });*
Bundle bundle = new Bundle();
bundle.putString("KEY", "VALUE");
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);    // set Fragmentclass Arguments
将数据放入片段时:

*holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // transaction to the targeted fragment from current fragment
            AppCompatActivity activity = (AppCompatActivity) view.getContext();
            Fragment myFragment = new open_order();
            activity.getSupportFragmentManager().beginTransaction().replace(R.id.view_order_frag, myFragment).addToBackStack(null).commit();         
        }
    });*
Bundle bundle = new Bundle();
bundle.putString("KEY", "VALUE");
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);    // set Fragmentclass Arguments
您可以使用
setArguments()
将包传递给片段

或者你可以发送捆绑包中的列表

在捆绑包中,您可以将“位置”的值更改为与“水果”(0)和“veletable”(1)情况不同。 在片段中检索时,您可以决定检索哪个列表。 并使用列表

在片段内部:-

// Create fragment and give it an argument for the selected article

        ArticleFragment newFragment = new ArticleFragment();
        Bundle args = new Bundle();
        // in case your list is of custom objects
        //args.putParcelableArrayList("prgmUri", prgmUri);
        //in case of string arraylist
        //args.putStringArrayList("prgmName", prgmName);
        args.putInt("selected", position);
        newFragment.setArguments(args);

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack so the user can navigate back
        transaction.replace(R.id.fragment_container, newFragment);
        transaction.addToBackStack(null);

        // Commit the transaction
        transaction.commit();
您可以使用
setArguments()
将包传递给片段

或者你可以发送捆绑包中的列表

在捆绑包中,您可以将“位置”的值更改为与“水果”(0)和“veletable”(1)情况不同。 在片段中检索时,您可以决定检索哪个列表。 并使用列表

在片段内部:-

// Create fragment and give it an argument for the selected article

        ArticleFragment newFragment = new ArticleFragment();
        Bundle args = new Bundle();
        // in case your list is of custom objects
        //args.putParcelableArrayList("prgmUri", prgmUri);
        //in case of string arraylist
        //args.putStringArrayList("prgmName", prgmName);
        args.putInt("selected", position);
        newFragment.setArguments(args);

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack so the user can navigate back
        transaction.replace(R.id.fragment_container, newFragment);
        transaction.addToBackStack(null);

        // Commit the transaction
        transaction.commit();
首先,你需要广播,这样你就可以发送你的邮件了 从适配器到片段的信息

1-创建BroadcastHelper类:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    String strtext = getArguments().getString("key");    
    return inflater.inflate(R.layout.fragment, container, false);
}
   holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent url = new Intent("url");
            url ("url_adapter",item.get(position).getURL());
            BroadcastHelper.sendInform(context,"url",url);
        }
    });
2-从适配器发送意图

 public class BroadcastHelper {
     public static final String BROADCAST_EXTRA_METHOD_NAME = "INPUT_METHOD_CHANGED";
    public static final String ACTION_NAME = "hassan.hossam";
    private static final String UPDATE_LOCATION_METHOD = "updateLocation";


    public static void sendInform(Context context, String method) {
        Intent intent = new Intent();
        intent.setAction(ACTION_NAME);
        intent.putExtra(BROADCAST_EXTRA_METHOD_NAME, method);
        try {
            context.sendBroadcast(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void sendInform(Context context, String method, Intent intent) {
        intent.setAction(ACTION_NAME);
        intent.putExtra(BROADCAST_EXTRA_METHOD_NAME, method);
        try {
            context.sendBroadcast(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
3-在你的片段中使用:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    String strtext = getArguments().getString("key");    
    return inflater.inflate(R.layout.fragment, container, false);
}
   holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent url = new Intent("url");
            url ("url_adapter",item.get(position).getURL());
            BroadcastHelper.sendInform(context,"url",url);
        }
    });
注意:您可以将此广播用于任何用途,而不仅仅是适配器。例如,您可以使用它从应用程序中的任何位置向您的主要活动通知新的更新

首先,你需要广播,这样你就可以发送你的邮件了 从适配器到片段的信息

1-创建BroadcastHelper类:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    String strtext = getArguments().getString("key");    
    return inflater.inflate(R.layout.fragment, container, false);
}
   holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent url = new Intent("url");
            url ("url_adapter",item.get(position).getURL());
            BroadcastHelper.sendInform(context,"url",url);
        }
    });
2-从适配器发送意图

 public class BroadcastHelper {
     public static final String BROADCAST_EXTRA_METHOD_NAME = "INPUT_METHOD_CHANGED";
    public static final String ACTION_NAME = "hassan.hossam";
    private static final String UPDATE_LOCATION_METHOD = "updateLocation";


    public static void sendInform(Context context, String method) {
        Intent intent = new Intent();
        intent.setAction(ACTION_NAME);
        intent.putExtra(BROADCAST_EXTRA_METHOD_NAME, method);
        try {
            context.sendBroadcast(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void sendInform(Context context, String method, Intent intent) {
        intent.setAction(ACTION_NAME);
        intent.putExtra(BROADCAST_EXTRA_METHOD_NAME, method);
        try {
            context.sendBroadcast(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
3-在你的片段中使用:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    String strtext = getArguments().getString("key");    
    return inflater.inflate(R.layout.fragment, container, false);
}
   holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent url = new Intent("url");
            url ("url_adapter",item.get(position).getURL());
            BroadcastHelper.sendInform(context,"url",url);
        }
    });
注意:您可以将此广播用于任何用途,而不仅仅是适配器。例如,您可以使用它从应用程序中的任何位置向您的主要活动通知新的更新



使用bundle进行碎片扫描您添加了您尝试过的代码吗?@Prashant singh请发布您的code@Prashantsingh兄弟,检查我下面提到的答案,。。。。在单击“使用碎片包”时设置此捆绑包扫描添加您尝试过的代码片段?@Prashant singh请发布您的code@Prashantsingh兄弟,检查我下面提到的答案,。。。。点击设置此捆绑感谢您的回复,但我已将我的问题与我面临的实际问题进行了编辑。看一看,如果可以,请告诉我help@Prashantsingh不要使用setOnClick使用onItemClick Listener谢谢你的回答,但我已将我的问题与我面临的实际问题进行了编辑。看一看,如果可以,请告诉我help@Prashantsingh 不要使用setOnClick使用onItemClick ListenerBrother!感谢您的回答,但我已经将我的问题与我面临的实际问题进行了编辑。请看一看,并告诉我,您是否可以帮助仅在连接listner的itemView上设置标记(位置),在onclick中,您可以通过view.getTag()获得单击的项目的位置,然后在列表的此位置使用此项目,并使用setArguments()将项目信息发送到下一个片段。Brother!感谢您的回答,但我已经将我的问题与我面临的实际问题进行了编辑。请看一看,并告诉我,您是否可以帮助仅在连接listner的itemView上设置标记(位置),在onclick中,您可以通过view.getTag()获得单击的项目的位置,然后在列表的此位置使用此项目,并使用setArguments()将项目信息发送到下一个片段。在步骤2中,此url应该是什么,以及url适配器,您是否可以告诉我,如果我正在使用改型来获取数据,那么我还必须遵循相同的过程。仅是意图的名称,您可以将其设置为exp所需的任何内容:您可以调用它(“用户名”,item.get(position).getName())和item.get(position).getName是您需要发送的值。关于第二个问题是的,您可以简单地:将获取方法放在大小写“url”中:Toast.makeText(getActivity(),url_适配器,Toast.LENGTH_SHORT)。show();break;好的,非常感谢…….另外,我很想知道,在我的界面中,我应该使用什么@GET注释来获取数据。非常感谢兄弟,与您的讨论给了我很大帮助。第2步中的url应该是什么,还有url适配器,您能否告诉我,我是否正在使用改装来获取数据o我必须遵循相同的过程,它只是目的的名称,您可以为exp设置任何您想要的名称:您可以调用它(“用户名”、item.get(position.getName());和item.get(position)。getName是您需要发送的值。关于第二个问题,是的,您可以简单地将您的获取方法放在“url”的大小写中:Toast.makeText(getActivity(),url_适配器,Toast.LENGTH_SHORT).show();break;OK非常感谢…….我也很想知道,在我的界面中,我应该使用什么@GET注释来获取数据谢谢兄弟,与您的讨论对我帮助很大。