如何在popBackStack()上获取元素

时间:2016-05-17 07:00:32

标签: android android-fragments

我有两个片段:在第一个片段中我这样做:

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

我需要返回此String的第一个片段。我怎么能这样做? 谢谢

2 个答案:

答案 0 :(得分:0)

有三种方式

  1. 静态变量:在第一个片段中定义public static变量,在第二个片段中更新其值。
  2. BroadcastReceiver
  3. EventBus您甚至可以找到EventBus教程here
  4. 将字符串传递给BR或EventBus,您可以通过定义适当的方法或监听器在第一个片段中获取它。

答案 1 :(得分:-2)

尝试使用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中执行捆绑包的解析部分。对包的分辨率部分进行空检查。如果未解析bundle,则getString(“key”)方法将给出空指针异常。