0

我有两个fragments,我们称它们为 A 和 B。A 是 a ListFrag,B 是用户输入的表单。下面的粗略插图显示了用户交互。

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

用户点击 Item2 并看到

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

用户填写表格,点击保存,FragmentB 将信息传回给FragmentA。AFragment现在将以前不可见的布局设置为现在可见的状态。FragmentA 也被重新插入到容器中,因此用户现在可以看到。

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. 如果我不这样做,FragmentA 将尝试使用空值填充变量,因为它们尚未从FragmentB 传递,但会导致崩溃。我该怎么做呢?我知道我需要一个if (!=null)我只是不知道拿什么来比较它。

编辑

通过使布局在 Fragment A 而不是 Fragment B 中再次可见解决了问题。上面的代码现在可以工作

4

1 回答 1

1

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

if (getArguments() != null)
于 2013-06-06T00:52:55.523 回答