Мой класс A создает в своем конструкторе экземпляр класса B. Конструктор класса B создает экземпляр своего внутреннего класса C. Класс C нуждается в поле в своем конструкторе из класса A, и здесь возникает проблема.Класс C достигает только значения по умолчанию для поля A.
Я инициализирую значение поля A в конструкторе A перед началом инициализации B и C. Я проверил, что поле имеет нужное мне значение,Тем не менее, значение этого поля в конструкторе C всегда является значением по умолчанию.Я не уверен, как с этим бороться.Любая помощь?
Спасибо!
Спасибо, ребята, за все ответы!Я чувствовал, что нужно больше информации.
Это часть моего класса А. Проблемными переменными являются startX и startY.Я определил их в конструкторе либо напрямую, либо через метод setter.Класс B - это DrawView.Класс C - это DrawThread.Я не знаю, как передать аргументы в конструктор DrawView, в противном случае я бы.Помогите?Другой вариант - использовать / * display = ((WindowManager) getSystemService (Context.WINDOW_SERVICE)). GetDefaultDisplay ();
в DrawView или DrawThread, чтобы установить мои startX и startY, но он просто не хочет работать.Это действительно переключает мой вопрос больше на Android теперь, и я буду благодарен за любые предложения, как получить размер экрана в конструкторе DrawThread, который был конечной целью всего этого:)?
открытый класс, расширяемый ColorAnimationУпражнение {
public static float startX;
public static float startY;
//other stuff here
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// turn off the window's title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
// tell system to use the layout defined in our XML file
setContentView(R.layout.main);
/*display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
startX = display.getWidth();
startY = display.getHeight();*/
mDrawView = (DrawView) findViewById(R.id.pend);
mDrawThread = mDrawView.getThread();
// give the DrawView a handle to the TextView used for messages
mDrawView.setTextView((TextView) findViewById(R.id.text));
Конструктор класса B:
//
public DrawView (контекстный контекст, атрибуты AttributeSet) {super (context, attrs);
// register our interest in hearing about changes to our surface
SurfaceHolder holder = getHolder();
holder.addCallback(this);
thread = new DrawThread(holder, context, new Handler() {
@Override
public void handleMessage(Message m) {
mStatusText.setVisibility(m.getData().getInt("viz"));
mStatusText.setText(m.getData().getString("text"));
}
});
setFocusable(true); // make sure we get key events
}
// часть класса C DrawThread:
класс DrawView расширяет SurfaceView реализует SurfaceHolder.Callback {
class DrawThread extends Thread {//................
//..............
public DrawThread(SurfaceHolder surfaceHolder, Context context,
Handler handler) {
// get handles to some important objects
mSurfaceHolder = surfaceHolder;
mHandler = handler;
mContext = context;