1

我不能从 Fragment 调用局外人课程,不知道为什么。并告诉我这些信息。

无法从 MainActivity 类型对非静态方法 selectItem(String, String, String) 进行静态引用

这是我的编码。我想从 ContentFragment 中调用“selectItem”类。这是我不能调用这个类的问题。

private void selectItem(String title, String gender, String getStats) {     
    Fragment fragment = new ContentFragment();
    Bundle args = new Bundle();
    args.putString(ContentFragment.JOBTITLE, title);
    args.putString(ContentFragment.JOBGENDER, gender);
    args.putString(ContentFragment.JOBSTATUS, getStats);
    fragment.setArguments(args);        

    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

}

public static class ContentFragment extends Fragment {

    public ContentFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.list_layout, container, false);
        btnPopMsg = (TextView) rootView.findViewById(R.id.btnPopMsg);
        btnPopMsg.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                >>>selectItem("", "", "ALL");<<<
            }
        });            
        return rootView;
    }
}
4

2 回答 2

1

您必须在创建实例后设置对whatever-wrapper-class-is 实例的ContentFragment引用,然后调用引用的方法。或者,如果它适合您的设计,您可以static从定义中删除修饰符。ContentFragment发生这种情况是因为嵌套静态类的实例可能在没有包装类的包装类对象的情况下存在,因此在嵌套类中没有对包装类的引用,它可以调用包装类的方法。

于 2013-09-26T09:17:38.633 回答
0

您不能static method在非静态方法中调用 a 。如果要在 中调用该函数,请onClick添加代码块:

if(getActivity() instanceof MainActivity){
      ((MainActivity)getActivity()).selectItem("", "", "ALL");
}
于 2013-09-26T09:24:38.813 回答