我有一个活动片段,上面有一个listview元素。无法将数据添加到listview。有人能告诉我出了什么问题吗?
public class MainActivity extends FragmentActivity {
public String[] listS ={"item1","item2","item3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
MainFragment f = new MainFragment();
ft.replace(R.id.fragcontainer, f);
ft.commit();
//here the problem occurs
ListView lv = (ListView)findViewById(R.id.listf);
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_row,R.id.labeld, listS));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Fragment的课程:
public class MainFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sis){
return inflater.inflate(R.layout.fragment_layout, container, false);
}
}
答案 0 :(得分:6)
此方法存在许多问题,但其根源在于FragmentTransaction
replace()
方法添加了我认为包含ListView
的片段的片段试图找到是一个异步过程。该片段不会立即添加到活动视图层次结构 中,但稍后会更新。
如果您要在ListView
中向Fragment
添加内容,为什么不在MainFragment
子类'onCreateView()
方法中进行添加?这就是它的工作方式。
编辑:典型的onCreateView()
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout, container, false);
ListView lv = (ListView) view.findViewById(R.id.listf);
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_row,R.id.labeld, listS));
return view;
}
答案 1 :(得分:0)
当你添加代码来定义你的类时,
public class MainFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sis) {
View view = inflater.inflate(R.layout.my_fragment, container, false);
ListView listView = (ListView) view.findViewById(R.id.list);
return view;
}
}
答案 2 :(得分:0)
问题是您要求该ListView的活动
“这个”。findViewById(...
您可以在片段中询问片段以查看视图,或管理Fragment类中listView的内容。
答案 3 :(得分:0)
请使用设计窗口中的列表视图,如下所示。我遇到了确切的问题,现在我可以在源代码中找到该视图。
主要问题是IDE附加了ID“
的”android“<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>