2017-03-14 5 views
1

こんにちは私の質問はこれです。私はタブが付いているときに下のシートが別の断片を内側に開いたボタンを持っているView Pagerの中に断片を持っています。一番下のシートにはオブジェクトのリストがあり、ユーザーがこれを選択すると、先ほど触れた最初のフラグメントにそのオブジェクトを渡したいのですが、問題はそのフラグメントが一時停止していることです。 一時停止中のフラグメント間でデータを送信するにはどうすればよいですか?フラグメントとフラグメントの通信

+0

チェックフラグメントのライフサイクルを取得します。 – Piyush

+0

これまでに疲れたことは何ですか? – Wizard

+0

@Andrea Fragmentは、あなたのアクティビティが休止状態にある場合に一時停止します。 フラグメント –

答えて

0

フラグメント間でデータをやり取りする方法は複数あります。いくつかは以下のとおりです。あなたが断片クラス

  • 参加のゲッター/セッターを使用することができます

    1. あなたは
    2. その親アクティビティを使用して、フラグメント間でデータを共有することができますが、断片または活動
    3. 間更新/通過データ用のインタフェースを使用することができます
    4. あなたはまた、データ
    を渡すためにバンドルを使用することができます
  • 断片や活動の間でデータを渡す/共有するためにオブザーバーデザインパターンを使用することができます0

    あなたのニーズに合った最適なアプローチを選ぶことはあなた次第です。

  • +0

    情報を渡すフラグメントがonPause()にある場合でも、このaproachは機能しますか?そのフラグメントをもう一度作成することを望んでいないので、 – Andrea

    +0

    @andrea、はい、最適なアプローチを選択してください。 – Geek

    +0

    Bundleオプションを試しましたが、情報を渡したいフラグメントがすでに作成されていて、getRegister()内で何もしないgetArguments()があるため、動作しません。 – Andrea

    0

    使用この

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 
    
        public SectionsPagerAdapter(FragmentManager fm) { 
         super(fm); 
        } 
    
        @Override 
        public Fragment getItem(int position) { 
         System.out.print(position + "to" + tab_position); 
    
    
         Fragment fragment = null; 
         switch (position) { 
          case 0: 
    
           Bundle bundle = new Bundle(); 
           bundle.putString("message", "getdata"); 
           bundle.putStringArrayList("name", running_veicle); 
           bundle.putStringArrayList("loc", running_loc); 
           bundle.putStringArrayList("running_device_id", running_device_id); 
           fragment = new Vehicle_Status_fragment_running_info(); 
           fragment.setArguments(bundle); 
    
    
           break; 
          case 1: 
    
           Bundle bundle1 = new Bundle(); 
           bundle1.putString("message", "getdata"); 
           bundle1.putStringArrayList("name", idle_name); 
           bundle1.putStringArrayList("loc", idle_loc); 
           bundle1.putStringArrayList("idle_device_id", idle_device_id); 
           fragment = new Vehicle_Status_fragment_Idle_info(); 
           fragment.setArguments(bundle1); 
    
           break; 
          case 2: 
    
           Bundle bundle2 = new Bundle(); 
           bundle2.putString("message", "getdata"); 
           bundle2.putStringArrayList("name", stop_name); 
           bundle2.putStringArrayList("loc", stop_loc); 
           bundle2.putStringArrayList("stop_device_id", stop_device_id); 
           fragment = new Vehicle_Status_fragment_Stop_info(); 
           fragment.setArguments(bundle2); 
           break; 
    
          case 3: 
           Bundle bundle3 = new Bundle(); 
           bundle3.putString("message", "getdata"); 
           bundle3.putStringArrayList("name", Innactive_name); 
           bundle3.putStringArrayList("loc", Innactive_loc); 
           bundle3.putStringArrayList("innactive_device_id", Innactive_device_id); 
           fragment = new Vehicle_Status_fragment_Inactive_info(); 
           fragment.setArguments(bundle3); 
           break; 
    
         } 
         return fragment; 
        } 
    
        @Override 
        public int getCount() { 
         // Show 4 total pages. 
         return 4; 
        } 
    
        @Override 
        public CharSequence getPageTitle(int position) { 
         Locale l = Locale.getDefault(); 
    
         switch (position) { 
          case 0: 
           return getString(R.string.tab_Running).toUpperCase(l); 
          case 1: 
           return getString(R.string.tab_Idle).toUpperCase(l); 
          case 2: 
           return getString(R.string.tab_Stop).toUpperCase(l); 
          case 3: 
           return getString(R.string.tab_Innactive).toUpperCase(l); 
    
         } 
         return null; 
        } 
    
    
    } 
    

    は、データ

    View view = inflater.inflate(R.layout.fragment_tab_veicle_status_list, container, false); 
        listobj = (ListView) view.findViewById(R.id.gridview); 
        String myValue = this.getArguments().getString("message"); 
    
    +0

    このフラグメントは、情報をonPause()に渡したいですか?私はその断片をもう一度作成することを望んでいないので – Andrea

    関連する問題