我有一个绘制到画布的自定义视图。我试图在用户从该视图所绑定的活动中按下按钮时调用画布的更改。目前,我试图通过调用我在视图中创建的名为setNewDrawable的公共方法来做到这一点。
调试器为视图ID提供了不同的值,具体取决于我在发布Invalidate时是在setNewDrawable内还是在Overridden 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();
}
});
}
}
全部谢谢!
答案 0 :(得分:0)
问题是布局不足。我删除它,它工作正常。