我不能从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;
}
}
答案 0 :(得分:1)
您必须在创建ContentFragment
实例后设置对whatever-wrapper-class-is实例的引用,然后调用引用的方法。或者,如果符合您的设计,您可以从static
定义中移除ContentFragment
修饰符。这是因为嵌套的静态类'实例可能没有包装类的wrtapper对象,因此在嵌套类中没有对包装类的引用,它可以调用包装类'方法。
答案 1 :(得分:0)
你不能用非静态方法调用static method
。如果要在onClick
中调用该函数,请添加代码块:
if(getActivity() instanceof MainActivity){
((MainActivity)getActivity()).selectItem("", "", "ALL");
}