Как вызвать изменения в пользовательском объекте представления из его активности - PullRequest
0 голосов
/ 08 ноября 2010

У меня есть пользовательский вид, который рисует на холсте. Я пытаюсь вызвать изменения на холсте, когда пользователь нажимает кнопку из действия, к которому привязано это представление. В настоящее время я пытаюсь сделать это, вызывая открытый метод 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();
                }
            });
        }
    }

Спасибо всем!

1 Ответ

0 голосов
/ 15 ноября 2010

Проблема заключалась в макете инфлятора. Я удалил его, и он работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...