使用Activity类在片段类中调用方法

时间:2017-10-14 07:04:54

标签: java android android-fragments android-activity

我正在尝试向我的活动添加一个片段,并从活动中调用片段类内的方法。 我测试了片段而没有调用活动类中的方法,片段显示在活动中没有任何问题。但是我无法在片段类中调用该方法。

以下是我在活动类中的代码。

使用下面的方法,当点击一个按钮时,我会调用片段显示在我的活动中。

public void checkTimes(View view){
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = 
    fragmentManager.beginTransaction();
    table_fragment tablefragment = new table_fragment();
    fragmentTransaction.add(R.id.fragmentContainer, tablefragment);
    fragmentTransaction.commit();
}

下面是片段类的代码,填充数据方法是我想要调用的方法。

public class table_fragment extends Fragment {

View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
// Inflate the layout for this fragment
    view = inflater.inflate(R.layout.table_fragment, container, false);
    return view;
}

/**
 * Method used to populate dates in the fragment
 * @param startDate
 * @param endDate
 */
public void populateData(Context context,LocalDate startDate, LocalDate endDate){
    ArrayList<LocalDate> dates = Utility.calculateDates(startDate,endDate);
    TableLayout table = (TableLayout) view.findViewById(R.id.dateTable);  //getting the table layout in the fragment
    for(LocalDate date : dates){
        TableRow tableRow=new TableRow(context);
        tableRow.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
        TextView tv=new TextView(context);
        tv.setText(date.toString());
        tableRow.addView(tv);

        table.addView(tableRow);
    }
}
}

我想从activity类中调用填充日期方法并显示片段。

我怎样才能实现这个目标?

谢谢。

1 个答案:

答案 0 :(得分:1)

制作如下所示的方法,然后使用tablefragment调用您的方法。 并从活动中调用此方法。 并使用xml文件添加您的片段。

  public void setDataAccordingToYourNeed(){
       table_fragment tablefragment=getFragmentManager().findFragmentById(your_fragment_id);
       tablefragment.yourFragmentMethod();
    }
如果你没有让我知道,这肯定会解决你的问题