如何从android中的另一个Fragment调用一个Fragment类方法

时间:2016-03-12 09:46:12

标签: android android-fragments

嗨我在我的应用程序中非常新的android我创建了两个片段,它们是“MenuFragment”和“TextFragment”确定没问题

但在我的TextFragment中我有一个方法,所以我想从我的MenuFragment类中调用该方法

我想从我的MenuFragment中调用的public void change(String txt,String txt1)方法

我怎么能这样做,请帮我一些

TextFragment: -

public class TextFragment extends Fragment {
    TextView text,vers;

    @Override

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

        return view;
    }

    public void change(String txt, String txt1){

        text.setText(txt);
        vers.setText(txt1);
    }
}

MenuFragment: -

public class MenuFragment extends Fragment {

    String[] AndroidOS = new String[]{"Cupcake", "Donut", "Eclair", "Froyo", "Gingerbread", "Honeycomb", "Ice Cream SandWich", "Jelly Bean", "KitKat", "Jelly Bean", "KitKat"};
    String[] Version = new String[]{"1.5", "1.6", "2.0-2.1", "2.2", "2.3", "3.0-3.2", "4.0", "4.1-4.3", "4.4", "4.1-4.3", "4.4"};

  @Override
    public void onListItemClick(ListView l, View v, int position, long id) {

    }
}

3 个答案:

答案 0 :(得分:3)

你可以试试这个。

对于TextFragment: -

return s.length() < t.length();

对于MenuFragment: -

public class TextFragment  extends Fragment{

public static TextView text,vers;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return super.onCreateView(inflater, container, savedInstanceState);
}

public static void change(String txt, String txt1){

    text.setText(txt);
    vers.setText(txt1);
}
}

我希望这会对你有所帮助。谢谢

答案 1 :(得分:1)

将这样的两个片段之间的通信放在一起并不是一个好主意,因为你正在耦合fragments; TextFragment不应该知道来自MenuFragment的方法。

这里描述了一个更好的解决方案:http://developer.android.com/guide/topics/fundamentals/fragments.html

您必须为这两个Activity创建fragments并制作call back以进行通信

答案 2 :(得分:0)

这与Android无关,你需要更好地理解什么是类,对象,指针等 - 所有一般的OOP概念。

要获得结果,您需要向TextFragment类的对象添加一个变量指针,该对象必须在使用前正确初始化。然后打电话:

if(varPtr!=null)
    varPtr.change(...);