0

我設置參數使用以下代碼從XML充氣片段:設定參數片段導致IllegalStateException異常

fragment_phone=(AddNewFragment)fm.findFragmentById(R.I'd.phone_fragment); 
    Bundle args=fragment_phone.getArguments(); 
    if(args==null) 
    { 
     args=new Bundle(); 
     args.putString("hint","Phone"); 
     fragment_phone.set arguments(args); 
     } 
     else 
      args.putString("hint","Phone"); 

    //Similarly for two other fragments that are also instances of AddNewFragment 

我使用三個Bundle對象,每個片段。 的logcat的說:Fragment is already active java.lang.IllegalStateException at android.support.v4.app.setArguments

我試圖消除setArguments導致NullPointerException當我把這個:

Bundle args=get arguments(); 
    String hint=args.getString("hint"); 
    Log.d(TAG," Hint :"+hint); 
+0

您無法爲在xml佈局中定義的片段設置參數。 – Luksprog

+0

那麼我怎樣才能通過它們的任何值,我可以在XML中定義時做到這一點 – vamsiampolu

+0

不在xml中。您可以手動添加它們並使用帶有setArguments()的Bundle,或者您可以調用setter方法(但您需要自己保存數據,因爲它不會像使用參數那樣自動保存)。 – Luksprog

回答

1

隨着你總是要實施interface片段。

  1. 在要與其他片段通信的片段中創建interface

  2. 在您的MainActivityActivity類中執行interface

  3. 撥打getArguments中的onActivityCreated()以避免任何NullPointerExceptions

欲瞭解更多信息,請參閱this

+0

我想在接口回調中使用片段的資源ID,以便我可以正確地獲取每個實例的值......有沒有辦法從FragmentManager或其他東西獲取資源ID。 – vamsiampolu

相關問題