【问题标题】:transfer data from fragment A -> fragment B - > fragment C. When user click Back button, I want to return to fragment A and data从片段 A -> 片段 B -> 片段 C 传输数据。当用户单击后退按钮时,我想返回片段 A 和数据
【发布时间】:2017-04-03 02:48:30
【问题描述】:

我是 android 开发人员的新手。我有一个关于 3 个片段的转移的问题。

我有 3 个片段 (A - B - C)。我想从 A -> B -> C 传输数据。
在每个片段中,数据都已更改。 当用户单击 BACK BUTTON 时,用户想要返回 A 和更新的数据。 如何使用更新数据返回片段 A? 谢谢。

【问题讨论】:

    标签: android fragment transfer


    【解决方案1】:

    这是一个如何实现通信的示例想法。

     // activity classs
     public class SampleActivity extends Activity implements    OnFragmentChangeListener {
     OnBackPressListener  dataFragment;
     public void onCreate(bundle){
    
          android.app.FragmentManager fragmentManager=getFragmentManager();
    
        android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    
        dataFragment = new DataFragment();
        fragmentTransaction.add(R.id.audio_permission_button,dataFragment);
        fragmentTransaction.commit()
     }
      @override
      public void OnFragmentChange(Bundle bundle){
      //here you go.
      // write code to load new fragment with same idea. now you have bundle do what you want.
    
    }
    @Override
    public void onBackPressed() {
     // you can call this method from any click event, This just an sample idea.
     dataFragment.OnActivityBackPress();
    }
    
    }
     // interface to communicate with fragment
     public interface OnFragmentChangeListener {
         public void OnFragmentChange()
     }
     // fragment class
    public class DataFragment extends Fragment implements OnBackPressListener {
    
     OnFragmentChangeListener onFragmentChangeListener;
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     onFragmentChangeListener=(OnFragmentChangeListener) getActivity();
    
    
    }
    
        @Override
    public void OnActivityBackPress() {
     // pass you data to activity for loading new fragment or to refresh data.
     Bundle bundle= new Bundle();
    
     onFragmentChangeListener.OnFragmentChange(bundle);
    
    
    
    }
    }
    
    // interface behave like mediator 
    public interface OnBackPressListener {
    
    public void OnActivtiyBackPress();
    }
    

    【讨论】:

    • @ZeroOne 这是如何在片段之间传递数据的示例。
    【解决方案2】:

    使用接口来实现这一点。在片段和活动中实现接口,因为它是通过活动在片段之间进行通信的好方法。然后通过接口发送数据并从中提取数据。

    【讨论】:

      【解决方案3】:
      1. 您可以使用接口类在片段之间进行通信,但它必须确保所有片段都处于活动状态。

      2. 您可以使用 SharedPreferences 来保存数据并在任何您喜欢的地方检索它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        相关资源
        最近更新 更多