我有两个片段的活动。一个是用于输入的片段,另一个是基于输入将数据放入列表视图中。
在我的活动中,我得到了这个由输入片段调用的方法:
public void deliverOutput(int position, int[] output){
TabFragment2 listFrag = (TabFragment2) getSupportFragmentManager().findFragmentById(R.id.listFragment);
if(listFrag != null){
listFrag.receiveOutput(output);
}
else{
//not relevant for this post
}
}
该方法获取list-fragment的一个实例,并调用方法receiveOutput(output)来发送由另一个片段中的method-call获得的int-array。
public class TabFragment2 extends ListFragment {
ArrayList<String> inputList;
ArrayAdapter<String> adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab_fragment_2, container, false);
String[] test = {"asdf", "qwer", "yxcv"};
inputList = new ArrayList<String>(Arrays.asList(test));
adapter = new ArrayAdapter<>(getActivity(), R.layout.list_item_standard, inputList);
setListAdapter(adapter);
return v;
}
public void receiveOutput(int[] o){
adapter.add(getString(R.string.listitemstr, o[0], o[1], o[2]));
Log.d("CC", "Output received.");
}
}
这是我的listFragment代码。实际上,receiveOutput方法应该现在将数组的数据添加到listview。但即使调用了adapter.add(...),它也没有被添加到listview中。显示String []测试的数据。 我想我在上面展示的一个代码中犯了一个错误,但我不知道为什么adapter.add(...)不会将数据添加到列表中。
编辑: 我做了一些测试,看起来方法中所做的更改没有被应用,但我仍然不知道为什么。该方法正在执行中。换句话说:似乎该方法被声明为静态,但它实际上并不是。