Android 如何在popBackStack()上获取元素

Android 如何在popBackStack()上获取元素,android,android-fragments,Android,Android Fragments,我有两个片段:在第一个片段中,我做到了: ritorno.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { manager.beginTransaction().replace(R.id.content_frame,new SearchFlight()).addToBackStack(nul

我有两个片段:在第一个片段中,我做到了:

     ritorno.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            manager.beginTransaction().replace(R.id.content_frame,new SearchFlight()).addToBackStack(null).commit();
        }
    });
这很有效。在第二部分中,我需要返回到第一个片段,因此我决定这样做:

 String s = element.getText().toString(); //I need to return it
 FragmentManager manager = getActivity().getSupportFragmentManager();
 SearchFragment fragment = new SearchFragment();
 manager.popBackStack();
我需要返回到这个字符串的第一个片段。我怎么做呢? 谢谢

有三种方法

  • 静态变量:在第一个片段中定义
    public Static
    变量,在第二个片段中更新其值
  • 您甚至可以找到EventBus教程

  • 将字符串传递给BR或EventBus,您可以通过定义适当的方法或侦听器在第一个片段中获取它。

    尝试使用bundle对象来获取它

     String s = element.getText().toString(); //item to be returned
     FragmentManager manager = getActivity().getSupportFragmentManager();
     SearchFragment fragment = new SearchFragment();
     Bundle bundle = new Bundle();
     bundle.putString("key", "value");
     fragment.setArguments(bundle);
     manager.popBackStack();
    
    然后,在SearchFragment中解析捆绑包,如下所示:

    Bundle bundle = this.getArguments();
    bundle.getString("key");
    

    在SearchFragment的onCreateView中执行捆绑包的解析部分。对包的解析部分进行空检查。如果未解析捆绑包,则getString(“key”)方法将给出空指针异常

    为什么你建议用“添加”而不是“替换”?阅读问题时出现了一些误解,很抱歉,没问题。你建议三种方法中的哪一种?公共静态有效吗?我建议您选择EventBus。因为第一个片段已从后台删除,所以它可能无法从广播接收器或EventBus接收消息。