当我通过MainActivity调用ListViewAdpater时,它工作正常。但是如果我创建ListViewFragment它就不会被调用。我在MainActivity中添加了ListViewFragment listViewFragment = new ListViewFragment();
。我有ListViewAdapter为
public class ListViewAdapter extends ArrayAdapter<String> {
public ListViewAdapter(Context context, String[] sensorArray) {
super(context, R.layout.listview_adapter, sensorArray);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
View view = layoutInflater.inflate(R.layout.listview_adapter, parent, false);
ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
TextView textView = (TextView) view.findViewById(R.id.textView);
imageView.setImageResource(R.drawable.image);
textView.setText(getItem(position));
return view;
}
}
但是当我通过下面的Fragment调用时,我看不到任何listView
public class ListViewFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main, container, false);
String[] sensorArray = getResources().getStringArray(R.array.sensor_array);
ListView listView = (ListView) view.findViewById(R.id.listView);
listView.setAdapter(new ListViewAdapter(getActivity(),sensorArray));
return view;
}
}
当我运行调试器时,它调用ListViewFragment但它没有进入onCreate方法
我更改了xml文件,如下所示 所以在activity_main.xml中我添加了`
<fragment android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment"
android:name="com.app.fragment.ListViewFragment"
tools:layout="@layout/listviewfragment"/>
and created listviewfragment.xml as
'
<ListView 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"
/>
这是对的吗?
答案 0 :(得分:1)
需要将片段附加到活动才能运行。您需要使用xml(静态)或使用片段管理器(动态)将片段添加到活动中。
静态地,您可以通过将其放入活动的布局文件中来添加片段:
<fragment android:name="com.example.android.fragments.MyFragment"
android:id="@+id/my_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:name
应指向您的片段类。
使用片段管理器,您可以添加片段,如下所示: 在你的活动中,onCreate()只需使用:
ListViewFragment listViewFragment = new ListViewFragment();
getFragmentManager().beginTransaction().add(R.id.container_view, listViewFragment).commit();
有关详细信息,请参阅FragmentManager和FragmentTransaction。您也可以将replace
方法与容器视图一起使用,顾名思义将替换该片段。
答案 1 :(得分:1)
您需要使用FragmentTransaction,并且必须在主活动布局中包含FrameLayout元素。
activity_main.xml中:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>
MainActivity:
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_container,new ListViewFragment(), "sensorArray");
ft.commit();