2016-05-26 43 views
-1

我是android..I的初學者。我創建了兩個片段,其中一個活動位於我的應用中。在片段一中,我添加了一個ExpanadableListview和兩個editText..and一個onclick按鈕..for onclickbutton我做片段替換..如果我點擊按鈕..我想通過所有數據到fragment2..reuseIt ..我有一些confusion..I應該使用..捆綁..或..接口概念.. ..誰能幫助我..以兩種不同佈局將數據從一個片段發送到另一個片段

下面是片段1 ..更換代碼..

@Override 
public void onClick(View view) { 
    FragmentTransaction ft; 
    ft = fm.beginTransaction(); 
    Frag2New frag2New = new Frag2New(); 
    ft.replace(R.id.total_content, frag2New); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 
+0

您必須通過接口調用此片段替換方法。 onClick方法必須位於活動類中。要了解如何執行此操作,請參閱http://stackoverflow.com/a/12683615/5819589關於如何使用捆綁檢查將數據發送到片段http://stackoverflow.com/a/12739968/5819589 –

+0

什麼類型的數據你想傳遞第二個片段 –

+0

我想傳遞字符串,int值..和arralist –

回答

0
在活動

public class YourActivity{ 
    private List<String> mYourSharedList; 

    public List<String> getMyList(){ 
     return mYourSharedList; 
    } 
} 
從該活動的任何片段

public class YourFragment extends Fragment { 
    private List<String> mMyListInFragment; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     mMyListInFragment = ((YourActivity)getActivity()).getMyList(); 
    } 
} 

mMyListInFragment - 將指針活動列出,所以如果你會得到這樣的名單,你會在你所有的碎片同一列表的工作。

+0

bro..can你給我鏈接的示例代碼。 。 –

+0

我更新了答案) –

0

我發現在不同組件之間發送數據的最簡單方式是這樣的library.設置並開始使用很容易,它可以節省大量時間,不僅可以發送字符串,整數可以隨捆綁,也可以自己發送定製對象。

1

您可以使用Interface在片段之間傳遞數據。 聲明一個接口:上LayoutOne.java片段

public interface OnButtonPressListener { 
public void onButtonPressed(String msg,int value,ArrayList<Object> arrData); 

}

public class LayOutOne extends Fragment { 

OnButtonPressListener buttonListener; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    ViewGroup root = (ViewGroup) inflater.inflate(R.layout.layout_one, null); 
     Button but=(Button)root.findViewById(R.id.button1); 
     but.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      buttonListener.onButtonPressed("Message From First Fragment",1,ArrayList objct); 
     } 
    }); 
    return root; 
} 

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      buttonListener = (OnButtonPressListener) getActivity(); 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement onButtonPressed"); 
     } 
    } 

上片段2

public class LayOutTwo extends Fragment implements OnButtonPressListener{ 
ViewGroup root; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
    root = (ViewGroup) inflater.inflate(R.layout.layout_two, null); 
    return root; 
} 
@Override 
public void onButtonPressed(String msg,int i,ArrayList<object> obj) { 
    // TODO Auto-generated method stub 
    //print the values or show them 
} 
1

您應該使用Bundle將數據從一個片段發送到第二個片段。 用法很簡單

從Frag1發送數據到Frag2內Frag2

FragmentTransaction ft; 
ft = fm.beginTransaction(); 
Frag2 f2 = new Frag2(); 
Bundle b = new Bundle(); 
b.putString("UNIQUE_KEY","YOURDATA"); 

f2.setArguments(b); 
ft.replace(R.id.total_content, frag2New); 
ft.addToBackStack(null); 
ft.commit(); 

接收數據

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View view = inflater.inflate(...); 
    Bundle b = getArguments(); 
    if(b!==null) 
    { 
     String data = b.getString("UNIQUE_KEY"); 
     //doing something with this data 
    } 
} 

基本上你也可以傳遞目的和其它原語(INT /浮動/雙面/長)以及包內部

相關問題