J'ai une classe Fragment EchossStampFragment
dans lequel je peux directement faire référence àRéférence findViewById de Fragment en classe non Fragment
.findViewbyId (R.id.mainView)
Dans mon second non classe de fragment EchossMainView
Je veux aborder cette vue et modifier son arrière-plan.
Comment puis-je aborder dans onInitSuccess comme ceci:
public void onInitSuccess() {
// EchossStampActivity.setText("onInitSuccess");
mainView.setBackgroundColor(Color.RED);
}
dans la classe EchossMainView
?
EchossStampFragment Classe
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 Classe
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);
}
}
Qu'est-ce que EchossMainView et StampBaseView? En supposant qu'ils étendent tous deux une vue, vous pouvez appeler 'setBackground()' depuis la classe elle-même. Si vous devez définir le texte sur une vue de texte à l'intérieur, vous pouvez envisager de créer un ViewGroup personnalisé ou similaire. – AdamMc331
'StampBaseView' est une bibliothèque externe tierce. Je dois adresser un 'mainView' dans ma mise en page xml. Je peux le faire depuis le fragment mais pas directement depuis EchossMainView. Si je fais juste ce que vous avez dit, l'arrière-plan de la balise xml 'mainView' ne changera pas. Comment puis-je étendre la vue de la classe Fragment à la classe EchossMainView? – Stefan
Je ne pense pas que vous devez. Avez-vous vu ma réponse à cela, et avez-vous déjà essayé? Je soupçonne que cela fonctionnera pour vous. – AdamMc331