在充气前检查值

时间:2013-06-06 00:23:15

标签: android

我有两个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中再次显示布局来解决问题。上面的代码现在正在工作

1 个答案:

答案 0 :(得分:1)

如果B通过A.setArguments()传递值,那么这应该有效:

if (getArguments() != null)