У меня есть пользовательский вид, который рисует на холсте. Я пытаюсь вызвать изменения на холсте, когда пользователь нажимает кнопку из действия, к которому привязано это представление. В настоящее время я пытаюсь сделать это, вызывая открытый метод setNewDrawable, который я создал внутри представления.
Отладчик выдает мне разные значения для идентификатора представления в зависимости от того, находится ли я внутри setNewDrawable или внутри метода Overridden onDraw, когда я публикую сообщение Invalidate.
Например, переменные отладчика показывают: (This - MyView id = 830067720176) или (This - MyView id = 830067712344) в setNewDrawable и onDraw соответственно. Это заставляет меня думать, что я в основном имею две копии объекта, и я по сути взаимодействую с неправильной.
Как я могу получить информацию в моем пользовательском представлении, чтобы определить, что он рисует?
Вот код, который я запускаю.
public class Main extends Activity {
MyView mView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.main, null);
mView= (MyView) v.findViewById(R.id.my_view);
//A button to modify what's drawn on the canvas
Button switchLeft = (Button) findViewById(R.id.switch_left);
switchLeft.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mView.setNewDrawable();
mView.postInvalidate();
}
});
}
}
Спасибо всем!