Итак, я сейчас перемещаю свой код, который работал во всей среде действий, в ту, которая использует один или два действия плюс кучу фрагментов. У меня возникли проблемы с этим сейчас. Я пытаюсь преобразовать активность, которая берет кучу текстовых объектов JSON из Интернета, сохраняет их в локальной базе данных SQLite и затем запрашивает их и помещает в ListView. Не слишком сложно было переносить данные JSON SQLite, но у меня проблемы с просмотром списка ... особенно в строке findViewById, где он «не может найти символ« список »Ошибка, связанная с просмотром списка фрагментов, не удается найти символ «список»
Вот мой onCreateView код:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_event, container, false);
dbHelper.open();
Cursor cursor = dbHelper.fetchAllTestObjects();
dbHelper.close();
// The desired columns to be bound
String[] columns = new String[]{
SQLiteDbAdapter.test_object_id,
};
// the XML defined views which the data will be bound to
int[] to = new int[]{
R.id.test_object_id,
};
// create the adapter using the cursor pointing to the desired data
//as well as the layout information
SimpleCursorAdapter dataAdapter = new SimpleCursorAdapter(
getActivity(), R.layout.home_test_objects_info,
cursor,
columns,
to,
0);
listView = (ListView) view.findViewById(R.id.list);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
// Get the cursor, positioned to the corresponding row in the result set
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
int testObjectId = cursor.getInt(cursor.getColumnIndexOrThrow(SQLiteDbAdapter.test_object_id));
DynamoDBManager.CoreInfo listCore = new DynamoDBManager.CoreInfo(testObjectId, "", "");
// Do action based on listCore
}
});
return view;
}
для моего fragment_event_list.xml у меня есть:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.navigationdrawerexample.EventFragment">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
И для настройки объекта для объектов, которые будут заселить ListView, home_events_info.xml которые будут иметь другие элементы TextView в нем в некоторый момент:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/eventsRelLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="6dip">
<TextView
android:id="@+id/test_object_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</RelativeLayout>
Основные различия между моим кодом активности, и это то, что я использовал (List) шаблон Fragment и автоматически назван идентификатор для fragment_event_list.xml в списке вместо ListView1, который я имел в своем activity_home.xml и не использует LinearLayout, но FrameLayout.
activity_home.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
Я представляю себе объяснить эти различия в моей нынешней проблеме, как фрагмент и FrameLayout работают иначе, чем активность и LinearLayout, но я не знаю, как/почему и как исправить ошибку ,