Java 如何从自定义视图对象的活动调用对其的更改

Java 如何从自定义视图对象的活动调用对其的更改,java,android,view,android-activity,Java,Android,View,Android Activity,我有一个绘制到画布的自定义视图。当用户从该视图绑定的活动中按下按钮时,我试图调用对画布的更改。目前,我正试图通过调用在视图中创建的名为setNewDrawable的公共方法来实现这一点 调试器为视图ID提供不同的值,这取决于我在发布Invalidate时是在setNewDrawable内还是在重写的onDraw方法内 例如,调试器变量分别在setNewDrawable和onDraw中显示:(This-MyView id=830067720176)或(This-MyView id=83006771

我有一个绘制到画布的自定义视图。当用户从该视图绑定的活动中按下按钮时,我试图调用对画布的更改。目前,我正试图通过调用在视图中创建的名为setNewDrawable的公共方法来实现这一点

调试器为视图ID提供不同的值,这取决于我在发布Invalidate时是在setNewDrawable内还是在重写的onDraw方法内

例如,调试器变量分别在setNewDrawable和onDraw中显示:(This-MyView id=830067720176)或(This-MyView id=830067712344)。这让我觉得我基本上有两个对象的副本,我基本上是在与错误的一个进行交互

如何将信息获取到自定义视图以确定它绘制的内容

这是我正在运行的代码

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();
                }
            });
        }
    }

谢谢大家

问题在于布局充气机。我把它取了下来,效果很好