2013-06-06 39 views
0

我有兩個fragments我們會稱它們爲A & B. A是ListFrag而B是用戶輸入的一種形式。下面的粗略插圖顯示了用戶交互。檢查充氣前的數值

Fragment A  
<ListView> 
Item1 
Item2 <--link to fragment B 
Item3 

用戶點擊項目2,看到

Fragment B 
<TextView> - <EditText> 
<TextView> - <EditText> 
<TextView> - <EditText> 
<save button> 

用戶填寫表單,點擊保存,Fragment B通過了信息回Fragment A. Fragment A現在做佈局,這是以前看不見集到現在可見的狀態。 Fragment A也被重新插入到容器中,以便用戶現在看到。

Fragment A  
<TextView> 
<TextView> 
<TextView> 

<ListView> 
Item1 
Item2 <--link to fragment B 
Item3 

這裏是的onCreate

代碼
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    view = inflater.inflate(R.layout.fragment_assets, container, false); 

    if (getArguments() != null) { 
     LinearLayout ll = (LinearLayout) view.findViewById(R.id.assets_store_info); 
     ll.setVisibility(View.VISIBLE); 
     String mStore = getArguments().getString("store"); 
     String mPhone = getArguments().getString("phone"); 
     String mAddress = getArguments().getString("address"); 
     String mCity = getArguments().getString("city"); 
     String mZip = getArguments().getString("zip"); 
     String mState = getArguments().getString("state"); 

     TextView store = (TextView) view.findViewById(R.id.store); 
     TextView phone = (TextView) view.findViewById(R.id.phone); 
     TextView address = (TextView) view.findViewById(R.id.address); 
     TextView city = (TextView) view.findViewById(R.id.city); 

     store.setText("Store #: " + mStore); 
     phone.setText("Phone #: " + mPhone); 
     address.setText(mAddress); 
     city.setText(mCity + ", " + mZip + ", " + mState); 
    }  
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
      android.R.layout.simple_list_item_1, values); 
    setListAdapter(adapter); 
    return view; 
} 

我的問題是我需要插入像if-else條件語句到我onCreate。如果我沒有Fragment A會嘗試使用空值膨脹變量,因爲它們尚未從Fragment B傳遞過來,但導致崩潰。我應該如何去做這件事?我知道我將需要一個if (!=null)我只是不知道什麼來比較它。

編輯

問題解決了由片段A,而不是片段B再次使佈局可見上面的代碼現在工作

+0

難道你不能處理片段a內的值嗎?分開關注點,片段a可以關注自己的UI元素並處理傳入的任何空值。 –

+0

@Graham Smith不確定我關注你。我知道如果Fragment A能夠處理它自己的UI,它可以消除這些問題,但它必須從Fragment B中爲這個特定元素獲取它的值。那麼我該怎麼做? –

回答

1

若B通過A.setArguments傳遞值(),然後這應該工作:

if (getArguments() != null) 
+1

我試過了,看到編輯 –

+1

這個工作,但經過一些編輯。我將發佈代碼以展示我如何使其工作 –