0

fragmentsA と B と呼ぶ2 つがあります。A は aListFragで、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 もコンテナーに再挿入されるため、ユーザーには 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を myに挿入する必要があることonCreateです。そうしないと、変数が BFragmentからまだ渡されていないため、A は null 値で変数を膨らませようとしFragment、クラッシュを引き起こします。これを行うにはどうすればよいですか?が必要になることはわかっていますが、if (!=null)何と比較すればよいかわかりません。

編集

この問題は、フラグメント B ではなくフラグメント A でレイアウトを再度表示することで解決されました。上記のコードは現在機能しています。

4

1 に答える 1