私は直接私の第二の非において参照findViewbyID
.findViewbyId(R.id.mainView)
を参照することができたフラグメントクラスEchossStampFragment
を有しますフラグメントクラスEchossMainView
このビューに対処し、その背景を変更したい。
どのように私はそうのようonInitSuccessでそれに対処することができます:EchossMainView
クラスで
public void onInitSuccess() {
// EchossStampActivity.setText("onInitSuccess");
mainView.setBackgroundColor(Color.RED);
}
?
EchossStampFragmentクラス
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クラス
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とStampBaseViewとは何ですか?それらが両方ともビューを拡張していると仮定すると、クラス内から 'setBackground()'を呼び出すことができます。テキストをテキストビュー内に設定する必要がある場合は、カスタムViewGroupなどを作成することをお勧めします。 – AdamMc331
'StampBaseView'は外部の第三者のライブラリです。 私のXMLレイアウトで 'mainView'を扱う必要があります。私はフラグメントからこれを行うことはできますが、EchossMainViewから直接行うことはできません。 あなたが言ったことだけを行うと、XMLタグ 'mainView'の背景は変更されません。 Fragmentクラスのビューを 'EchossMainView'クラスに拡張するにはどうしたらいいですか? – Stefan
私はあなたが必要とは思わない。あなたは私の答えを見ましたか?まだ試しましたか?私はそれがあなたのために働くと思う。 – AdamMc331