2017-06-17 133 views
-1

我有一個標籤視圖與兩個片段。這兩個片段包含卡片的回收者視圖。 兩個片段中的每張卡都有一個按鈕。 點擊片段1的按鈕應該將片段2作爲單獨的頁面打開,反之亦然。 我苦苦尋找實現這一點沒有盡一切過於複雜,緊密耦合的方法。如何從另一個片段內的RecyclerView適配器啓動一個片段?

這是帶有自己的適配器的片段。 enter image description here

這是片段二: enter image description here

點擊在受贈者頁面,選擇供體按鈕應該在一個新的頁面,用戶將能夠分配一個供體的選擇受贈人開的供體片段。

所以我有兩個需要在這裏

1)從一個片段

2)啓動一個片段來跟蹤從受贈人的新的捐助頁面被打開了,這樣我可以指定爲供體具體受託人。

我希望這是可以理解的。

到目前爲止,我已經試過LocalBroadcast和FragmentManager但它很難跟蹤的什麼我的代碼做。

你們能否提供一個更好的方法來實現這一目標?

+0

,使這個更復雜的事情是,我必須寫回收視圖的適配器內的所有代碼。任何其他解決此問題的方法。沒有將所有代碼填充到適配器中? – JavaBanana

回答

0


最簡單的解決方案可能會,開始一個新的活動,通過類似的ID,名稱或某事的意圖上的按鈕點擊。

Context.startActivity(new Intent(Context, YourAssigneeActivity.class) 
          .putExtra("ID",id)); 
0

因此我假設您在單擊一個選項卡上的按鈕時不會切換到另一個選項卡。因此片段應該填滿整個屏幕。

在這個假設在你心中最有可能切換Activity。這可以是多內斯容易的IntentIntent intent = new Intent(getActivity(), ActivityB.class) intent.putExtra("KEY", <your required data to transfer>); getActivity().startActivityForResult(intent);

注意,當您使用putExtra()不要忘記,你需要實現這些對象(explained here

Parcelable要了解哪些項目被點擊了你可以用下面的方式(僞 - 我個人認爲這是非常乾淨):

FragmentA implements YourAdapter.callback { 
    onItemClicked(<YourObject> item) { 
     <starting new activity as described above> 
    } 
} 
class YourAdapter extends RecyclerView.Adapter { 
    Callback mCallback; 

    YourAdapter(Context context, otherStuff) { 
     mCallback = (Callback) context; 
    } 

    interface Callback { 
     onItemClicked(<YourObject> item) 
    } 

    YourViewHolder implements View.OnClickListener { 
      onClick(View v) { 
       mCallback.onItemClicked(<YourObject> item) 
      } 
    } 
} 

一旦你在你的活動,你可以在你的活動onCreate()設定的片段。在活動中,在創建片段之前,使用onCreate中的getIntent()檢索數據。然後你可以將你的數據放在setArguments(<Bundle>)的片段中。在onCreateview()的片段中檢索它與。

我知道這是一種conmplicated。一個更好的解決方案是隻切換到一個活動並忘記Fragment。這會消除一層複雜性。

如果您直接從片段到片段,您可以忽略活動部分,但其餘應保持不變。

希望這是你正在尋找的答案!

編輯:請注意,mCallback = (Callback) context爲null,如果該活動沒有實施Callback

相關問題