-1
リストビューのListViewFragmentを持つフラグメントとEditextを持つ別のEditorFragmentがあります。アクティビティが作成されると、ListViewFragmentが追加されます。リストビュー項目をクリックすると、リストビュークリックされた項目の値をeditextで示すフラグメントEditorFragmentを追加します。問題は、リストビュー内の項目をクリックするとEditorFragmentがtextviewとともに表示されますが、textviewはリストビューのクリックされた項目の値を表示しないことです。問題はどこにあるのか知っていますか?リストビュー項目の値がeditextに表示されない(フラグメントを使用)
主な活動:
public class MainActivity extends AppCompatActivity {
ArrayList<String> items= new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().
beginTransaction().add(R.id.fragment_list,new ListViewFragment()).commit();
}
}
ListViewFragment
public class ListViewFragment extends Fragment {
private ListView editor=null;
static ArrayList<String> items= new ArrayList<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View result=inflater.inflate(R.layout.fragment_list, container, false);
editor=(ListView) (result.findViewById(R.id.listView));
items.add("Item 1");
items.add("Item 2");
ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, items);
editor.setAdapter(arrayAdapter);
editor.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
EditorFragment editorFragment = new EditorFragment();
Bundle bundle = new Bundle();
bundle.putInt("itemId", i);
editorFragment.setArguments(bundle);
getFragmentManager().beginTransaction()
.replace(R.id.fragment_list, editorFragment).commit();
}
});
return result;
}
EditorFragment:
public class EditorFragment extends Fragment {
private EditText editor=null;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
int itemId;
Bundle args = getArguments();
if (args != null && args.containsKey("itemId")) {
itemId= getArguments().getInt("itemId", -1);
}
View result=inflater.inflate(R.layout.fragment_editor, container, false);
editor=(EditText) (result.findViewById(R.id.editor));
editor.setText("hi");
Toast.makeText(getActivity(), "Test", Toast.LENGTH_LONG);
editor.setText(ListViewFragment.items.get(itemId));
return result;
}
}
ありがとうございました。ちなみに、そのokは、theeseのようなフラグメント間のデータを渡しますか?私はインターフェイスを使用するいくつかの例をチェックするので、インターフェイスがあればそれが良いかどうかを知ることはできません。 – JonD
はい、Parcelables引数/バンドルは正しい方法です –