从非片段中的片段引用 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)
我有一个片段 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)