我有两个fragments
我们称之为A& B. A是ListFrag
,B是用户输入的表格。下面的粗略插图显示了用户交互。
Fragment A
<ListView>
Item1
Item2 <--link to fragment B
Item3
用户点击Item2并看到
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)
我只是不确定要将它与之比较。
修改
通过在Fragment A而不是Fragment B中再次显示布局来解决问题。上面的代码现在正在工作答案 0 :(得分:1)
如果B通过A.setArguments()传递值,那么这应该有效:
if (getArguments() != null)