2015-10-14 67 views
0

我需要你們的幫助。我已經2天左右的工作,仍然是混淆片段鏈接..如何2個片段具有兩個列表視圖

我來這裏的目的是創建一個包含一個ListView片段。在每個項目點擊,它會顯示另一個片段與另一個列表視圖(如一個子菜單,但顯示在不同的片段)。

我這裏的代碼片段我

public class MasterFragment extends Fragment implements AdapterView.OnItemClickListener { 

ListView masterlist; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.master_fragment, container, false); 
    masterlist = (ListView) view.findViewById(R.id.masterlistview); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.masterlist, android.R.layout.simple_list_item_1); 
    masterlist.setAdapter(adapter); 
    masterlist.setOnItemClickListener(this); 
    return view; 
} 

@Override 
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
    long position = masterlist.getItemIdAtPosition(i); 
    if(position == 0){ 
     System.out.println("Item 0"); 
    } else { 
     System.out.println("Item 1"); 
    } 
} 

在我onItemClick,我怎麼能叫一個片段?我有2個帶有列表視圖的片段,但在其中有不同的數組。就像位置== 0一樣,調用FragmentA。否則,請致電FragmentB。

我在MasterFragment

public interface Communicator { 
    void respond(int index); 
} 

然後在我的MainActivity實現它創造了一個接口..但我真的不知道如何做到這一點。

回答

0

創建回調接口。在片段調用的活動中實現此接口。用回調方法在片段發送位置onclick。然後打電話給你的片段相對於定位

您的片段看起來應該是這樣

public class MasterFragment extends Fragment implements AdapterView.OnItemClickListener { 

public inteface OnItemClickResponse 

{ 
    void itemClick (int position); 
} 

OnItemClickResponse itemClickResponse; 

ListView masterlist; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.master_fragment, container, false); 
    masterlist = (ListView) view.findViewById(R.id.masterlistview); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.masterlist, android.R.layout.simple_list_item_1); 
    masterlist.setAdapter(adapter); 
    masterlist.setOnItemClickListener(this); 
    itemClickResponse = (OnItemClickResponse) getActivity(); 
    return view; 
} 

@Override 
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
    long position = masterlist.getItemIdAtPosition(i); 
    if (position == 0) { 
     itemClickResponse.itemClick(position); 
     System.out.println("Item 0"); 
    } else { 
     itemClickResponse.itemClick(position); 
     System.out.println("Item 1"); 
    } 
} 

和活動(必須實現接口「OnItemClickResponse」)

@Override 
public void itemClick(int position) { 
    if (position == 1) { 
     Fragment fragment = new FirstFragment(); 
     getSupportFragmentManager().beginTransaction() 
       .replace(android.R.id.content, fragment).commit(); 
    } else { 
     Fragment fragment = new SecondFragment(); 
     getSupportFragmentManager().beginTransaction() 
       .replace(android.R.id.content, fragment).commit(); 
    } 
} 
+0

我已經創建了一個接口通訊我片段..請參閱我的編輯 –

+0

這是哪裏getSupportFragmentManager()來自..它說不能解決。 –

+0

使用getFragmentManager或使用AppCompatActivity – Sadashiv

0
if(position == 0){ 
Fragment newFragment = new FragmemtA(); 
FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();  
fragmentTransaction.replace(R.id.container, newFragment).addToBackStack(null).commit(); 
} 
else 
{ 
Fragment newFragment = new FragmemtB(); 
FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.container, newFragment).addToBackStack(null).commit(); 
}