从非片段中的片段引用 findViewbyID class

Reference findViewbyID from Fragment in Non-Fragment class

我有一个片段 class EchossStampFragment,我可以在其中直接引用

.findViewbyId(R.id.mainView)

在我的第二个非片段 class EchossMainView 我想解决这个视图并更改它的背景。

我怎样才能像这样在 onInitSuccess 中解决它:

public void onInitSuccess() {
        // EchossStampActivity.setText("onInitSuccess");
        mainView.setBackgroundColor(Color.RED);
    }

EchossMainView class?

EchossStampFragment Class

public class EchossStampFragment extends Fragment implements EchossStampInterface {
    private static final String TAG = MainActivity.class.getSimpleName();
    View myView;
    private SupportMapFragment mapFragment;
    EchossMainView mainView = null;
    static TextView textView = null;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        myView = inflater.inflate(R.layout.activity_echoss, container, false);
        return myView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mainView = (EchossMainView) getView().findViewById(R.id.mainView);
        textView = (TextView) getView().findViewById(R.id.textView);
        FragmentManager fm = getChildFragmentManager();

        // Display Initialization

        DisplayMetrics metric = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(metric);
        mainView.init(metric);

        mainView.initEchossMainView(this); // this is where we are passing the current activity as interface

        // Library Initialization for Stamp
        mainView.echossPlatformInit(APIKEY, REGION, LANGUAGE, INDEX);

    }

EchossMainView Class

public class EchossMainView extends StampBaseView {

    private EchossStampInterface mEchossStampInterface;

    public EchossMainView(Context context) {
        super(context);
    }

    public EchossMainView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EchossMainView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void onInitSuccess() {
        EchossStampActivity.setText("onInitSuccess");
        mainView.setBackgroundColor(Color.RED);

    }
    public void onInitError(String code, String message) {
        EchossStampFragment.setText("onInitError - " + code + " " + message);

    }


    public void onStampSuccess(String stampResult) {
        EchossStampFragment.setText("onStampSuccess - " + stampResult);

    }

    public void onStampError(String code, String message) {
         EchossStampFragment.setText("onStampError - " + code + " " + message);
    }
}

由于 EchossMainView 最终必须从 View 扩展,您可以从 class 本身内部调用 setBackground:

public void onInitSuccess() {
    setBackgroundColor(Color.RED);
}

此处的方法文档:https://developer.android.com/reference/android/view/View.html#setBackgroundColor(int)