我有兩個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再次使佈局可見上面的代碼現在工作
難道你不能處理片段a內的值嗎?分開關注點,片段a可以關注自己的UI元素並處理傳入的任何空值。 –
@Graham Smith不確定我關注你。我知道如果Fragment A能夠處理它自己的UI,它可以消除這些問題,但它必須從Fragment B中爲這個特定元素獲取它的值。那麼我該怎麼做? –