从另一个活动/片段重启片段

时间:2014-04-19 12:20:26

标签: java android android-fragments

我是adroid的新手,所以我有一个小问题,但我不知道如何解决它。在android studio中,我创建了带有片段的默认滑动选项卡(看起来像http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/)。我有2个片段(“设置”和“Histrory”)。在Histrory片段中,我编写了所有逻辑(我创建了列表(使用自定义适配器返回带有自定义设计的行视图)并用sql中的数据填充它)。在我的安装程序片段中,我有alertDialog,它根据这些数据(来自sql)向sql和History片段生成列表添加一些数据。

我的问题是:我不知道如何从安装程序片段更新Histrory Fragment。我的适配器需要一个View,我无法(我不知道如何)从Setup Fragment获取。看起来我应该重建/重启历史片段,它将使用我的函数运行onCreateView,我将获得最新(更新)列表?或者我需要从Setup Fragment中的History Fragment获取视图,并从Setup片段传递视图到UpdateHistoryList运行更新功能?我花了一整天时间来解决这个问题,找不到任何好的和简单的解决方案......

HistoryFragment.java

  public class HistoryFragment extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View rootView = inflater.inflate(R.layout.historyfragment, container, false);

        ///////////////////////////////////////////////////
        UpdateHistoryList(rootView); ////// This work fine.
        ///////////////////////////////////////////////////

        return rootView;
    }

    // This function make request to db and fill array with some values
    public void UpdateHistoryList(View v) {

        <Some code>

        generateHistoryList(v, myarray);

    }

    public void generateHistoryList(View v,String[] myarray) {

        history_adapter adapter = new history_adapter(v.getContext(), values);
        ListView listView = (ListView) v.findViewById(R.id.history_list);

        listView.setAdapter(adapter);
    }

}

history_adapter.java

// generate row look
public class history_adapter extends ArrayAdapter<String> {
   private final Context context;
   private final String[] myarray;


   public history_adapter(Context context, String[] myarray) {
       super(context, R.layout.history_row, values);
       this.context = context;
       this.myarray = myarray;

   }

   @Override
   public View getView(int position, View convertView, ViewGroup parent) {
       LayoutInflater inflater = (LayoutInflater)   context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       View rowView = inflater.inflate(R.layout.history_row, parent, false);

       TextView catName = (TextView) rowView.findViewById(R.id.catName);

       catName.setText(myarray[position]);

       return rowView;
}

感谢。

0 个答案:

没有答案