2016-07-28 40 views
0

我試圖從適配器通過串包府ti'm到片段我片段捆綁返回NULL片段中調用時

及彼空是我的代碼添加字符串捆綁

  Bundle bundle=new Bundle(); 
      bundle.putString("id",expense_id); 
      AddExpenseFragment fragment=new AddExpenseFragment(); 
      fragment.setArguments(bundle); 
      UiActivity.startAddExpense(context); 

這是我的代碼來檢索片段

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    super.onCreateView(inflater, container, savedInstanceState); 
    View view=inflater.inflate(R.layout.activity_fragment_add_expense,container,false); 
    String id=this.getArguments().getString("id"); 
    return view; 
} 

捆綁值,我從我的recyclerView適配器類傳遞價值捆綁

+1

你在做什麼'startAddExpense'方法? – David

+0

@David它打電話意圖啓動片段活動 – rookieDeveloper

+1

請您告訴我你的片段事務提交你的片段的行嗎?我假設你開始不是你通過參數 – David

回答

1

問題很簡單這裏。您正在創建一個片段和數據設置它這是很好的,

AddExpenseFragment fragment=new AddExpenseFragment(); 
fragment.setArguments(bundle); 

但問題是,在你的

UiActivity.startAddExpense(context); 

你必須爲你的AddExpenseFragment的新實例被取代否將新創建的片段實例(將參數設置爲它)傳遞給startAddExpense()方法。

的解決方案是簡單,只通過新創建的片段的對象的startAddExpense()這樣的,

UiActivity.startAddExpense(context, fragment); 

,然後方法內部更換或添加這個新的片段和不實例化任何新片段對象

+0

好吧,這可能是問題我如何綁定片段,而開始活動 謝謝 – rookieDeveloper

+0

很高興它幫助你。這是一個完全獨立的問題,與此無關。最好爲此提出一個單獨的問題。如果問題解決了,請接受答案。它有助於維護社區標準。 –

0

試試這個:

Bundle bundle = this.getArguments(); 
String id=bundle.getString("id"); 
+0

無效的片段,給出相同的錯誤 – rookieDeveloper

0

從你的代碼中,很難發現問題。只要給你一些建議。首先,檢查您的變量expense_id是否爲空。 其次,檢查您創建並顯示的AddExpenseFragment是否相同。