fragments
A と 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>
ユーザーがフォームに入力し、[保存] をクリックすると、Fragment
B が情報をFragment
Aに返します。AFragment
は、以前は非表示だったレイアウトを現在表示されている状態に設定します。Fragment
A もコンテナーに再挿入されるため、ユーザーには 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 でレイアウトを再度表示することで解決されました。上記のコードは現在機能しています。