在静态方法中访问getActivity()

hei*_*erg 5 java android android-fragments android-fragmentactivity

我这里有这个类调用方法setPoint

public class PointsList extends Fragment {    
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.listpoints, container, false);

    public static class PointCreation extends Fragment {
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                         Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.point_creation, container, false);
        setPoint(view, CREATE);
        return view;
    }
}

static final void setPoint(View view, int goal) {
final EditText SerialField = (EditText) view.findViewById(R.id.Serial);
    if(goal == CREATE) {
        Button buttonGuardar = (Button) view.findViewById(R.id.buttonGuardar);
        buttonGuardar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String Serial = SerialField.getText().toString();
                pointsList.add(new Serial);
                //go back to R.layout.listpoints
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是在单击按钮将新的Serial添加到List后,我可以回到上一个菜单

R.layout.point_creation to R.layout.listpoints
Run Code Online (Sandbox Code Playgroud)

要移动片段我通常使用这样的东西:

            Fragment fragment = new PointsList();
            FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.container, fragment)
                    .commit();
Run Code Online (Sandbox Code Playgroud)

但在里面:

static final void setPoint(View view, int goal)
getActivity().getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)

不能从静态上下文引用,我不知道如何使静态类非静态?我有一些全局标志,我在静态类中使用它们(有2个),从导出起来有点痛苦

public class PointCreation(int something) extends Fragment 
Run Code Online (Sandbox Code Playgroud)

是我不能做的事情.

Vla*_*ich 20

您可以从视图中获取活动:

Activity activity = (Activity)view.getContext()
Run Code Online (Sandbox Code Playgroud)

如果您使用FragmentActivity(似乎是这样),那么将Context转换为FragmentActivity(而不是常规Activity),并且您还可以调用getSupportFragmentManager()

FragmentActivity activity = (FragmentActivity)view.getContext();
FragmentManager manager = activity.getSupportFragmentManager();
Run Code Online (Sandbox Code Playgroud)